diff --git a/CONTRIBUTING b/CONTRIBUTING index bb48975bac33592da6c04e07a30b02bd628fc8c4..5614728e201597c9ee7a071868442d779b630366 100644 --- a/CONTRIBUTING +++ b/CONTRIBUTING @@ -45,13 +45,28 @@ then you just add a line saying Signed-off-by: Random J Developer -using your real name (sorry, no pseudonyms or anonymous contributions.) +using a known identity (sorry, no anonymous contributions.) +The name you use as your identity should not be an anonymous id +or false name that misrepresents who you are. git commit --signoff will add such a Signed-off-by line at the end of the commit log message for you. -The ideal patch contains a ChangeLog entry and a test case for the -bug fixed or feature added. +The ideal patch contains a ChangeLog entry for the commit message and +a test case for the bug fixed or feature added. + +The commit message is expected to start with a one line summary of +what the patch does, prefixed with the main subdir the patch applies +to. e.g libelf: Rewind the elf_frob function bar definitions. + +Finally please include an ChangeLog entry explicitly listing the files +and what changed in each of them in the commit message. This will help +a reviewer understand which changes are expected (and which might be +accidential). Try to follow the GNU Change Log style: +https://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html +Note that elfutils previously maintained separate ChangeLog +files. These are no longer used. All changes should be documented in +the git commit message. The testsuite (make check) is expected to have zero failing tests. Do not knowingly add tests that FAIL. If there are architectures or @@ -69,6 +84,22 @@ After sending your patch to the mailinglist one of the committers to the project will review it, give feedback, and if perfect they will commit it for you. +All patches sent to the mailing list are tracked at +https://patchwork.sourceware.org/project/elfutils/list/ + +To use this from the command line you can use git-pw +https://patchwork.readthedocs.io/projects/git-pw/en/latest/ + +For using it with git-pw use these .git/config settings: + [pw] + server = https://patchwork.sourceware.org/api/1.2/ + project = elfutils + token = + states = committed,accepted,superseded,deferred,rejected,under-review + +If you would like to help maintain the pending patch list your +patchwork account can be added as maintainer for the elfutils project. + You can become a maintainer/committer yourself after you have provided at least a handful of accepted patches and agree to the guidelines in this document for creating, reviewing, accepting and committing patches. @@ -96,10 +127,15 @@ mailinglist that the patch has been pushed. committers may also create git branches starting with /... patches on these branches are works in progress, so might not be perfect yet, but should follow the above guidelines as much as possible and should -be aimed at integration into master. For merging a branch into master +be aimed at integration into main. For merging a branch into main the same process as above should be followed by posting the patches to the list first. +Note that a branch starting with /try... will be picked up +by the Sourceware buildbot and can be used to test your patches before +merging into the main branch: +https://builder.sourceware.org/buildbot/#/builders?tags=elfutils-try + committers/maintainers who repeatedly ignore the above guidelines, are hostile or offensive towards other committers or contributors, and don't correct their behavior after being asked by other committers diff --git a/ChangeLog b/ChangeLog index 52efca04406c674662da47679d98b83778df0064..6aed95b6974e46bb73a968ff93665254c3eb9a80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,29 @@ +2023-03-27 Di Chen + + * NEWS: Support readelf -Ds for using dynamic segment to + print symbol table. + +2023-03-03 Mark Wielaard + + * NEWS: Add ELFCOMPRESS_ZSTD support for libelf and elfcompress. + +2023-02-23 Mark Wielaard + + * NEWS: Add old version code names. + +2023-02-21 Mark Wielaard + + * configure.ac: Check for -Wuse-after-free=3 + +2023-02-15 Mark Wielaard + + * configure.ac: Error out when demangler is enabled, but + __cxa_demangle cannot be found. + +2023-01-11 Frank Ch. Eigler + + * configure.ac: Add some rlimit/affinity checks. + 2022-11-02 Mark Wielaard * configure.ac (AC_INIT): Set version to 0.188. diff --git a/Makefile.am b/Makefile.am index e92e05c20062af2ca4696469a64be81d0ac5ca76..41badfd7432baa017bb98925d95d4640cbeb4782 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,7 +29,7 @@ pkginclude_HEADERS = version.h SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl libdw \ libasm debuginfod src po doc tests -EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \ +EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING SECURITY \ COPYING COPYING-GPLV2 COPYING-LGPLV3 # Make sure the test install uses lib64 when $LIB will yield lib64. diff --git a/NEWS b/NEWS index 71534b8c454b96d8d55cc0791efc250c031ee50c..0420d3b8376877c1b11712f1aad90a2e2b6f6d06 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,48 @@ -Version 0.188 +Version 0.190 "Woke!" + +CONTRIBUTING: Switch from real name policy to known identity policy. + Updated ChangeLog policy (no more separate ChangeLog files). + There is a SECURITY bug policy now. + The default branch is now 'main'. + +libelf: Add RELR support. + +libdw: Recognize .debug_[ct]u_index sections + +readelf: Support readelf -Ds, --use-dynamic --symbol. + Support .gdb_index version 9 + +scrlines: New tool that compiles a list of source files associated + with a specified dwarf/elf file. + +debuginfod: Schema change (reindexing required, sorry!) for a 60% + compression in filename representation, which was a large + part of the sqlite index; also, more deliberate sqlite + -wal management during scanning using the + --scan-checkpoint option. + +backends: Various LoongArch updates. + +Version 0.189 "Don't deflate!" + +configure: eu-nm, eu-addr2line and eu-stack can provide demangled symbols + when linked with libstdc++. Use --disable-demangler to disable. + + A new option --enable-sanitize-memory has been added for msan + sanitizer support. + +libelf: elf_compress now supports ELFCOMPRESS_ZSTD when build against + libzstd + +libdwfl: dwfl_module_return_value_location now returns 0 (no return type) + for DIEs that point to a DW_TAG_unspecified_type. + +elfcompress: -t, --type= now support zstd if libelf has been build with + ELFCOMPRESS_ZSTD support. + +backends: Add support for LoongArch and Synopsys ARCv2 processors. + +Version 0.188 "no section left behind" readelf: Add -D, --use-dynamic option. @@ -11,7 +55,7 @@ libdwfl: Add new function dwfl_get_debuginfod_client. Add new function dwfl_frame_reg. Add new function dwfl_report_offline_memory. -Version 0.187 +Version 0.187 "no zero negatives" debuginfod: Support -C option for connection thread pooling. @@ -30,7 +74,7 @@ libdw, debuginfo-client: Load libcurl lazily only when files need to DEBUGINFOD_URLS is set, libcurl is only loaded when the debuginfod_begin function is called. -Version 0.186 +Version 0.186 "Just In Time" debuginfod-client: Default $DEBUGINFOD_URLS is computed from drop-in files /etc/debuginfod/*.urls rather than hardcoded into the @@ -56,7 +100,7 @@ libdw: Support for the NVIDIA Cuda line map extensions. translations: Update Japanese translation. -Version 0.185 +Version 0.185 "oops, I did it again" debuginfod-client: Simplify curl handle reuse so downloads which return an error are retried. @@ -64,7 +108,7 @@ debuginfod-client: Simplify curl handle reuse so downloads which elfcompress: Always exit with code 0 when the operation succeeds (even when nothing was done). On error the exit code is now always 1. -Version 0.184 +Version 0.184 "negative results" debuginfod: Use libarchive's bsdtar as the .deb-family file unpacker. @@ -83,7 +127,7 @@ libdw: handle DW_FORM_indirect when reading attributes translations: Update Polish translation. -Version 0.183 +Version 0.183 "100+ commits" debuginfod: New thread-busy metric and more detailed error metrics. New --fdcache-mintmp and tracking of filesystem freespace. @@ -100,7 +144,7 @@ config: profile.sh and profile.csh won't export DEBUGINFOD_URLS unless elflint, readelf: Recognize SHF_GNU_RETAIN. Handle SHT_X86_64_UNWIND as valid relocation target. -Version 0.182 +Version 0.182 "October Surprise!" backends: Support for tilegx has been removed. @@ -114,7 +158,7 @@ debuginfod-client: Now supports compressed (kernel) ELF images. libdwfl: Add ZSTD compression support. -Version 0.181 +Version 0.181 "Show me your ARMs" libelf: elf_update now compensates (fixes up) a bad sh_addralign for SHF_COMPRESSED sections. @@ -131,7 +175,7 @@ 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 +Version 0.180 "We got an L, we got an T, can we have a O?" elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given. @@ -145,7 +189,7 @@ size: Also obey radix printing for bsd format. nm: Explicitly print weak 'V' or 'T' and common 'C' symbols. -Version 0.179 +Version 0.179 "All your packages are belong to us!" debuginfod-client: When DEBUGINFOD_PROGRESS is set and the program doesn't install its own debuginfod_progressfn_t show download @@ -180,7 +224,7 @@ readelf, elflint: Handle PT_GNU_PROPERTY. translations: Updated Ukrainian translation. -Version 0.178 +Version 0.178 "All the build-id you can count!" debuginfod: New server, client tool and library to index and fetch ELF/DWARF files addressed by build-id through HTTP. @@ -202,7 +246,7 @@ libdw: Abbrevs and DIEs can now be read concurrently by multiple libdwfl: Will try to use debuginfod when installed as fallback to retrieve ELF and DWARF debug data files by build-id. -Version 0.177 +Version 0.177 "What is your category, class and taxonomy?" elfclassify: New tool to analyze ELF objects. @@ -218,7 +262,7 @@ libdwelf: Add dwelf_elf_e_machine_string. backends: Add support for C-SKY. -Version 0.176 +Version 0.176 "At your own RISC-V" build: Add new --enable-install-elfh option. Do NOT use this for system installs (it overrides glibc elf.h). @@ -246,7 +290,7 @@ backends: RISCV handles ADD/SUB relocations. Handle SHT_X86_64_UNWIND. Fixes CVE-2018-18310, CVE-2018-18520 and CVE-2018-18521. -Version 0.174 +Version 0.174 "extended shnum" libelf, libdw and all tools now handle extended shnum and shstrndx correctly. @@ -262,7 +306,7 @@ backends: RISCV and M68K now have backend implementations to generate CFI based Fixes CVE-2018-16062, CVE-2018-16402 and CVE-2018-16403. -Version 0.173 +Version 0.173 "crash free" More fixes for crashes and hangs found by afl-fuzz. In particular various functions now detect and break infinite loops caused by bad DIE tree cycles. @@ -280,16 +324,16 @@ backends: Handle BPF simple relocations. The RISCV backends now handles ABI specific CFI and knows about RISCV register types and names. -Version 0.172 +Version 0.172 "DWARF5 bugs split!" -No functional changes compared to 0.171. +No functional changes compared to 0.171 "DWARF5 split!". Various bug fixes in libdw and eu-readelf dealing with bad DWARF5 data. Thanks to running the afl fuzzer on eu-readelf and various testcases. eu-readelf -N is ~15% faster. -Version 0.171 +Version 0.171 "DWARF5 split!" DWARF5 and split dwarf, including GNU DebugFission, are supported now. Data can be read from the new DWARF sections .debug_addr, .debug_line_str, @@ -327,7 +371,7 @@ backends: Add a RISC-V backend. There were various improvements to build on Windows. The sha1 and md5 implementations have been removed, they weren't used. -Version 0.170 +Version 0.170 "DWARF4 1/2" libdw: Added new DWARF5 attribute, tag, character encoding, language code, calling convention, defaulted member function and macro constants @@ -347,7 +391,7 @@ backends: Add support for EM_PPC64 GNU_ATTRIBUTES. translations: Update Polish translation. -Version 0.168 +Version 0.168 "kthxbye" http://elfutils.org/ is now hosted at http://sourceware.org/elfutils/ @@ -357,7 +401,7 @@ libdw: dwarf.h corrected the DW_LANG_PLI constant name (was DW_LANG_PL1). readelf: Add optional --symbols[=SECTION] argument to select section name. -Version 0.167 +Version 0.167 "disassemble this!" libasm: Add eBPF disassembler for EM_BPF files. @@ -369,12 +413,12 @@ dwelf: Add ELF/DWARF string table creation functions. dwelf_strtab_init, dwelf_strtab_add, dwelf_strtab_add_len, dwelf_strtab_finalize, dwelf_strent_off, dwelf_strent_str and dwelf_strtab_free. -Version 0.166 +Version 0.166 "bugs be gone!" config: The default program prefix for the installed tools is now eu-. Use configure --program-prefix="" to not use a program prefix. -Version 0.165 +Version 0.165 "big DWARF & tiny ELF" elfcompress: New utility to compress or decompress ELF sections. @@ -391,7 +435,7 @@ backends: sparc support for core and live backtraces. translations: Updated Polish translation. -Version 0.164 +Version 0.164 "strip, no unstrip!" strip, unstrip: Handle ELF files with merged strtab/shstrtab tables. Handle missing SHF_INFO_LINK section flags. @@ -412,11 +456,11 @@ translations: Updated Ukrainian translation. Provide default-yama-scope subpackage. -Version 0.163 +Version 0.163 "size matters" Bug fixes only, no new features. -Version 0.162 +Version 0.162 "hard hat" libdw: Install new header elfutils/known-dwarf.h. dwarf.h Add preliminary DWARF5 constants DW_TAG_atomic_type, diff --git a/README b/README index 06a9fcd0d6f2fc89fc9c4c491c666d00d52abd56..690febdf58c9300e4fdfab8473c2056238d3ee31 100644 --- a/README +++ b/README @@ -29,3 +29,5 @@ Or use the form at https://sourceware.org/mailman/listinfo/elfutils-devel See the CONTRIBUTING file for how to propose patches to the code. See the NOTES files for some design decisions and notes. + +See the SECURITY file for defining and handling security-sensitive bugs. diff --git a/SECURITY b/SECURITY new file mode 100644 index 0000000000000000000000000000000000000000..677802c6b1f0b4d908450648e8dbdf028230c508 --- /dev/null +++ b/SECURITY @@ -0,0 +1,56 @@ + +The elfutils library and utilities aim to be generally robust and +reliable. However, elfutils routinely processes complex binary +structured data. This makes the code intricate and sometimes brittle. +While elfutils developers use a variety of static and dynamic checker +software (valgrind, sanitizers) in testing, bugs may remain. Some of +these bugs may have security-related implications. + + +While many errors are cleanly detected at runtime, it is possible that +vulnerabilities exist that could be exploitable. These may arise from +crafted / fuzzed / erroneous inputs, or perhaps even from valid inputs +with unforseen characteristics. Therefore, to minimize risks, users +of elfutils tools and libraries should consider measures such as: + +- avoiding running complex elfutils analysis on untrustworthy inputs +- avoiding running elfutils tools as privileged processes +- applying common platform level protection mechanisms such as + selinux, syscall filtering, hardened compilation, etc. + +Since most elfutils tools are run in short-lived, local, interactive, +development context rather than remotely "in production", we generally +treat malfunctions as ordinary bugs rather than security vulnerabilities. + + +Elfutils includes one network client/server: debuginfod. The +debuginfod man page contains a SECURITY section outlining the general +risks. tl;dr: many classes of server problems are delegated to +front-end proxies and curated elf/dwarf archives of the operator; +others to careful configuration of the debuginfod client. These are +not generally reportable as security vulnerabilities. However, we are +likely to accept security vulnerability reports related to: + +- availability: e.g., remotely exploitable server crash, but not + routine resource exhaustion or overload; client crash due to + unexpected valid traffic from trusted server + +- confidentiality: e.g., allowing the server to expose one client's + traffic to another client + +- integrity: e.g., causing the server to send erroneous + elf/dwarf/source data across the webapi; causing the client to + corrupt its cache to lose file integrity + +We welcome reports that are tangential to any of these subjects. + +Please report bugs via any of: +- email to +- https://sourceware.org/bugzilla/enter_bug.cgi?product=elfutils + +After considering the above exclusions, please report suspected +security vulnerabilities confidentially via any of: + +- email to +- email to +- email to diff --git a/backends/ChangeLog b/backends/ChangeLog index 5b0daffe4344f1eade30c0125c487d12b0e0f6d6..ddb4e0afbcebff47a751f23f8a6c0b2a9f02a7fd 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,68 @@ +2023-05-09 Youling Tang + + * Makefile.am (loongarch_SRCS): Add loongarch_initreg.c. + * loongarch_initreg.c: New file. + * loongarch_init.c (loongarch_init): Hook set_initial_registers_tid. + +2023-04-07 Youling Tang + + * Makefile.am (loongarch_SRCS): Add loongarch_corenote.c. + * loongarch_init.c (loongarch_init): Hook core_note. + * loongarch_corenote.c: New file. + +2023-04-07 Youling Tang + + * Makefile.am (loongarch_SRCS): Add loongarch_unwind.c. + * loongarch_init.c (loongarch_init): Hook unwind. + * loongarch_unwind.c: New file. + +2023-04-07 Youling Tang + + * Makefile.am (loongarch_SRCS): Add loongarch_retval.c. + * loongarch_init.c (loongarch_init): Hook return_value_location. + * loongarch_retval.c: New file. + +2023-04-07 Youling Tang + + * Makefile.am (loongarch_SRCS): Add loongarch_cfi.c and loongarch_regs.c. + * loongarch_cfi.c: New file. + * loongarch_regs.c: Likewise. + * loongarch_init.c (loongarch_init): Hook register_info and abi_cfi. + +2023-04-01 Youling Tang + + * loongarch_init.c (loongarch_init): Hook check_special_symbol. + * loongarch_symbol.c (loongarch_check_special_symbol): New function. + +2023-04-01 Youling Tang + + * loongarch_reloc.def: Add RELOC_TYPE B16 to RELAX. + +2023-02-07 Mark Wielaard + + * libebl_CPU.h (dwarf_peeled_die_type): Explicitly handle + DW_TAG_unspecified_type as if there was no DW_AT_type. + +2023-01-19 Mark Wielaard + + * sparc_reloc.def (NONE): Add EXEC and DYN. + +2022-12-21 Shahab Vahedi + + * Makefile.am (modules): Add arc. + (arc_SRCS): Added. + (libebl_backends_a_SOURCES): Append arc_SRCS. + * arc_init.c: New file. + * arc_reloc.def: New file. + * arc_symbol.c: New file. + +2022-12-02 Hengqi Chen + + * Makefile.am (modules): Add loongarch. + * loongarch_init.c: New file. + * loongarch_reloc.def: New file. + * loongarch_symbol.c: New file. + 2022-08-09 Andreas Schwab * riscv_init.c (riscv_init): HOOK segment_type_name, diff --git a/backends/Makefile.am b/backends/Makefile.am index 9566377f918d05a25487f59aea22f83befc1f292..bbb2aac79ab8a23676b3fe0509f0766e7ac8054a 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -37,7 +37,7 @@ 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 \ - m68k bpf riscv csky + m68k bpf riscv csky loongarch arc i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \ i386_retval.c i386_regs.c i386_auxv.c \ @@ -96,11 +96,18 @@ riscv_SRCS = riscv_init.c riscv_symbol.c riscv_cfi.c riscv_regs.c \ csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \ csky_regs.c csky_initreg.c csky_corenote.c +loongarch_SRCS = loongarch_init.c loongarch_symbol.c loongarch_cfi.c \ + loongarch_regs.c loongarch_retval.c loongarch_initreg.c \ + loongarch_unwind.c loongarch_corenote.c + +arc_SRCS = arc_init.c arc_symbol.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) \ - $(m68k_SRCS) $(bpf_SRCS) $(riscv_SRCS) $(csky_SRCS) + $(m68k_SRCS) $(bpf_SRCS) $(riscv_SRCS) $(csky_SRCS) \ + $(loongarch_SRCS) $(arc_SRCS) libebl_backends_pic_a_SOURCES = am_libebl_backends_pic_a_OBJECTS = $(libebl_backends_a_SOURCES:.c=.os) diff --git a/backends/aarch64_retval.c b/backends/aarch64_retval.c index 72d4e8a3a259fac005bf94ccbe4cf89bbb727c94..8eaebaf158342dd28764a3f72760d1c57a8db49c 100644 --- a/backends/aarch64_retval.c +++ b/backends/aarch64_retval.c @@ -303,12 +303,11 @@ aarch64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) } } - if (tag == DW_TAG_base_type - || tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (tag == DW_TAG_base_type || dwarf_is_pointer (tag)) { if (dwarf_bytesize_aux (&typedie, &size) < 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/alpha_retval.c b/backends/alpha_retval.c index d9bae3bcce2985357b1a7097976405e5aa7e252f..9d2dd045453f21687e07a0ca357fe7470399afff 100644 --- a/backends/alpha_retval.c +++ b/backends/alpha_retval.c @@ -89,15 +89,14 @@ alpha_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; Dwarf_Word size; 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) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/arc_init.c b/backends/arc_init.c new file mode 100644 index 0000000000000000000000000000000000000000..a7cceceb9717da09d5428ace366b6c7e320f8ce8 --- /dev/null +++ b/backends/arc_init.c @@ -0,0 +1,59 @@ +/* Initialization of ARC specific backend library. + Copyright (C) 2022 Synopsys 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 . */ + +/* More details on an ARC elf can be found at: + https://github.com/foss-for-synopsys-dwc-arc-processors/ \ + arc-ABI-manual/blob/master/arcv3-elf.md */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#define BACKEND arc_ +#define RELOC_PREFIX R_ARC_ +#include "libebl_CPU.h" + +/* This defines the common reloc hooks based on arc_reloc.def. */ +#include "common-reloc.c" + +Ebl * +arc_init (Elf *elf __attribute__ ((unused)), + GElf_Half machine __attribute__ ((unused)), + Ebl *eh) +{ + arc_init_reloc (eh); + HOOK (eh, machine_flag_check); + HOOK (eh, reloc_simple_type); + HOOK (eh, section_type_name); + + /* /bld/gcc-stage2/arc-snps-linux-gnu/libgcc/libgcc.map.in + #define __LIBGCC_DWARF_FRAME_REGISTERS__. */ + eh->frame_nregs = 146; + + return eh; +} diff --git a/backends/arc_reloc.def b/backends/arc_reloc.def new file mode 100644 index 0000000000000000000000000000000000000000..dfa3062900bf9e40d92c6bc594a3fdbfed05133a --- /dev/null +++ b/backends/arc_reloc.def @@ -0,0 +1,87 @@ +/* List the relocation types for ARC. -*- C -*- + 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 . */ + +/* NAME, REL|EXEC|DYN */ + +RELOC_TYPE (NONE, EXEC|DYN) +RELOC_TYPE (8, REL|EXEC|DYN) +RELOC_TYPE (16, REL|EXEC|DYN) +RELOC_TYPE (24, REL|EXEC|DYN) +RELOC_TYPE (32, REL|EXEC|DYN) +RELOC_TYPE (N8, REL|EXEC|DYN) +RELOC_TYPE (N16, REL|EXEC|DYN) +RELOC_TYPE (N24, REL|EXEC|DYN) +RELOC_TYPE (N32, REL|EXEC|DYN) +RELOC_TYPE (SDA, REL) +RELOC_TYPE (SECTOFF, REL) +RELOC_TYPE (S21H_PCREL, REL) +RELOC_TYPE (S21W_PCREL, REL) +RELOC_TYPE (S25H_PCREL, REL) +RELOC_TYPE (S25W_PCREL, REL) +RELOC_TYPE (SDA32, REL) +RELOC_TYPE (SDA_LDST, REL) +RELOC_TYPE (SDA_LDST1, REL) +RELOC_TYPE (SDA_LDST2, REL) +RELOC_TYPE (SDA16_LD, REL) +RELOC_TYPE (SDA16_LD1, REL) +RELOC_TYPE (SDA16_LD2, REL) +RELOC_TYPE (S13_PCREL, REL) +RELOC_TYPE (W, REL) +RELOC_TYPE (32_ME, REL) +RELOC_TYPE (N32_ME, REL) +RELOC_TYPE (SECTOFF_ME, REL) +RELOC_TYPE (SDA32_ME, REL) +RELOC_TYPE (W_ME, REL) +RELOC_TYPE (SDA_12, REL) +RELOC_TYPE (SDA16_ST2, REL) +RELOC_TYPE (32_PCREL, REL) +RELOC_TYPE (PC32, REL) +RELOC_TYPE (GOTPC32, REL) +RELOC_TYPE (PLT32, 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 (GOTOFF, REL) +RELOC_TYPE (GOTPC, REL) +RELOC_TYPE (GOT32, REL) +RELOC_TYPE (S21W_PCREL_PLT, REL) +RELOC_TYPE (S25H_PCREL_PLT, REL) +RELOC_TYPE (JLI_SECTOFF, REL) +RELOC_TYPE (TLS_DTPMOD, REL) +RELOC_TYPE (TLS_DTPOFF, REL) +RELOC_TYPE (TLS_TPOFF, REL) +RELOC_TYPE (TLS_GD_GOT, REL) +RELOC_TYPE (TLS_GD_LD, REL) +RELOC_TYPE (TLS_GD_CALL, REL) +RELOC_TYPE (TLS_IE_GOT, REL) +RELOC_TYPE (TLS_DTPOFF_S9, REL) +RELOC_TYPE (TLS_LE_S9, REL) +RELOC_TYPE (TLS_LE_32, REL) +RELOC_TYPE (S25W_PCREL_PLT, REL) +RELOC_TYPE (S21H_PCREL_PLT, REL) +RELOC_TYPE (NPS_CMEM16, REL) diff --git a/backends/arc_symbol.c b/backends/arc_symbol.c new file mode 100644 index 0000000000000000000000000000000000000000..be69814ecbc95ccc98346752fd1d59b69221cf51 --- /dev/null +++ b/backends/arc_symbol.c @@ -0,0 +1,81 @@ +/* ARC specific symbolic name handling. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#define BACKEND arc_ +#include "libebl_CPU.h" + + +/* Check whether machine flags are valid. */ +bool +arc_machine_flag_check (GElf_Word flags) +{ + return ((flags & ~EF_ARC_ALL_MSK) == 0); +} + +/* Check for the simple reloc types. */ +Elf_Type +arc_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub __attribute ((unused))) +{ + switch (type) + { + case R_ARC_32: + return ELF_T_WORD; + case R_ARC_16: + return ELF_T_HALF; + case R_ARC_8: + return ELF_T_BYTE; + default: + return ELF_T_NUM; + } +} + +/* Return symbolic representation of section type. */ +const char * +arc_section_type_name (int type, + char *buf __attribute__ ((unused)), + size_t len __attribute__ ((unused))) +{ + switch (type) + { + case SHT_ARC_ATTRIBUTES: + return "ARC_ATTRIBUTES"; + default: + break; + } + + return NULL; +} diff --git a/backends/arm_retval.c b/backends/arm_retval.c index 1c28f016b5bc61aa788a1dee9a2c769400590a0f..fa6d391434d0b81df229613283eab38894c128c5 100644 --- a/backends/arm_retval.c +++ b/backends/arm_retval.c @@ -86,14 +86,13 @@ arm_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { 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) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/i386_retval.c b/backends/i386_retval.c index 32fec7281666007dd2020a0536b10d7c6b000686..8a9c2a2b60b812f57edfb38301b0710889da096d 100644 --- a/backends/i386_retval.c +++ b/backends/i386_retval.c @@ -89,15 +89,14 @@ i386_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Word size; 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) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/ia64_retval.c b/backends/ia64_retval.c index 03ea4d89da492eb1267ed66f5a0b8f03eb53ace9..7e12236d3dcbf38bbc42e37de413586e97713a5f 100644 --- a/backends/ia64_retval.c +++ b/backends/ia64_retval.c @@ -264,14 +264,13 @@ ia64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { 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) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/libebl_CPU.h b/backends/libebl_CPU.h index 0e507bd3924a5dbcf331dcb8d8c240b94a13afa0..d138f5f7e588991fe3b87638c1ce22c601801bbe 100644 --- a/backends/libebl_CPU.h +++ b/backends/libebl_CPU.h @@ -1,5 +1,6 @@ /* Common interface for libebl modules. Copyright (C) 2000, 2001, 2002, 2003, 2005, 2013, 2014 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -53,7 +54,9 @@ extern bool (*generic_debugscn_p) (const char *) attribute_hidden; dwarf_tag (_die); }) /* Get a type die corresponding to DIE. Peel CV qualifiers off - it. */ + it. Returns zero if the DIE doesn't have a type, or the type + is DW_TAG_unspecified_type. Returns -1 on error. Otherwise + returns the result tag DW_AT value. */ static inline int dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result) { @@ -63,13 +66,35 @@ dwarf_peeled_die_type (Dwarf_Die *die, Dwarf_Die *result) /* The function has no return value, like a `void' function in C. */ return 0; + if (result == NULL) + return -1; + if (dwarf_formref_die (attr, result) == NULL) return -1; if (dwarf_peel_type (result, result) != 0) return -1; - return DWARF_TAG_OR_RETURN (result); + int tag = dwarf_tag (result); + if (tag == DW_TAG_unspecified_type) + return 0; /* Treat an unspecified type as if there was no type. */ + + return tag; } +static inline bool +dwarf_is_pointer (int tag) +{ + return tag == DW_TAG_pointer_type + || tag == DW_TAG_ptr_to_member_type + || tag == DW_TAG_reference_type + || tag == DW_TAG_rvalue_reference_type; +} + +#define CASE_POINTER \ + case DW_TAG_pointer_type: \ + case DW_TAG_ptr_to_member_type: \ + case DW_TAG_reference_type: \ + case DW_TAG_rvalue_reference_type + #endif /* libebl_CPU.h */ diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c index 9faae4c3594b66cf2c9e0659e13678ae09dd23fd..238ec16d4eeb19461cc66cfee52b83e7cf769a88 100644 --- a/backends/linux-core-note.c +++ b/backends/linux-core-note.c @@ -239,6 +239,7 @@ EBLHOOK(core_note) (const GElf_Nhdr *nhdr, const char *name, return 0; *regs_offset = 0; *nregloc = 0; + *reglocs = NULL; *nitems = 1; *items = vmcoreinfo_items; return 1; diff --git a/backends/loongarch_cfi.c b/backends/loongarch_cfi.c new file mode 100644 index 0000000000000000000000000000000000000000..5f3cd2c718402d865f213ade046c96821d57fe0d --- /dev/null +++ b/backends/loongarch_cfi.c @@ -0,0 +1,83 @@ +/* LoongArch ABI-specified defaults for DWARF CFI. + Copyright (C) 2023 OpenAnolis community LoongArch SIG. + Copyright (C) 2023 Loongson Technology Corporation Limted. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#define BACKEND loongarch_ +#include "libebl_CPU.h" + +/* LoongArch ELF ABI specification: +https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_register_convention +*/ +int +loongarch_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info) +{ + static const uint8_t abi_cfi[] = + { + /* The initial Canonical Frame Address is the value of the + Stack Pointer ($r3) as setup in the previous frame. */ + DW_CFA_def_cfa, ULEB128_7 (3), ULEB128_7 (0), + + /* The Stack Pointer ($r3) is restored from CFA address by default. */ + DW_CFA_val_offset, ULEB128_7 (3), ULEB128_7 (0), + +#define SV(n) DW_CFA_same_value, ULEB128_7 (n) + /* The return address register contains the return address setup by + caller. */ + SV (1), + + /* Callee-saved registers $s0-$s7. */ + SV (23), SV (24), SV (25), SV (26), SV (27), SV (28), + SV (29), SV (30), SV (31), + + /* The Frame Pointer ($fp, $r22) */ + SV(22), + + /* Callee-saved registers $fs0-$fs7. */ + SV (56), SV (57), SV (58), SV (59), SV (60), SV (61), + SV (62), SV (63), +#undef SV + + /* XXX Note: registers intentionally unused by the program, + for example as a consequence of the procedure call standard + should be initialized as if by DW_CFA_same_value. */ + }; + + abi_info->initial_instructions = abi_cfi; + abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi]; + abi_info->data_alignment_factor = -4; + + abi_info->return_address_register = 1; /* ra. */ + + return 0; +} diff --git a/backends/loongarch_corenote.c b/backends/loongarch_corenote.c new file mode 100644 index 0000000000000000000000000000000000000000..b549edc0556f159b05152039e40587857732ebb0 --- /dev/null +++ b/backends/loongarch_corenote.c @@ -0,0 +1,114 @@ +/* LoongArch specific core note handling. + Copyright (C) 2023 Loongson Technology Corporation Limited. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#define BACKEND loongarch_ +#include "libebl_CPU.h" + +#define ULONG uint64_t +#define PID_T int32_t +#define UID_T uint32_t +#define GID_T uint32_t +#define ALIGN_ULONG 8 +#define ALIGN_PID_T 4 +#define ALIGN_UID_T 4 +#define ALIGN_GID_T 4 +#define TYPE_ULONG ELF_T_XWORD +#define TYPE_PID_T ELF_T_SWORD +#define TYPE_UID_T ELF_T_WORD +#define TYPE_GID_T ELF_T_WORD + +#define PRSTATUS_REGS_SIZE (45 * 8) + +static const Ebl_Register_Location prstatus_regs[] = + { + { .offset = 0, .regno = 0, .count = 32, .bits = 64 }, /* r0..r31 */ + }; + +#define PRSTATUS_REGSET_ITEMS \ + { \ + .name = "orig_a0", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 32 * 8), \ + .group = "register" \ + }, \ + { \ + .name = "csr_era", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 33 * 8), \ + .group = "register", \ + .pc_register = true \ + }, \ + { \ + .name = "csr_badvaddr", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 34 * 8), \ + .group = "register" \ + }, \ + { \ + .name = "csr_crmd", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 35 * 8), \ + .group = "register" \ + }, \ + { \ + .name = "csr_prmd", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 36 * 8), \ + .group = "register" \ + }, \ + { \ + .name = "csr_euen", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 37 * 8), \ + .group = "register" \ + }, \ + { \ + .name = "csr_ecfg", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 38 * 8), \ + .group = "register" \ + }, \ + { \ + .name = "csr_estat", .type = ELF_T_XWORD, .format = 'x', \ + .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg) \ + + 39 * 8), \ + .group = "register" \ + } + /* 40 ~ 44 reserved */ + +#include "linux-core-note.c" diff --git a/backends/loongarch_init.c b/backends/loongarch_init.c new file mode 100644 index 0000000000000000000000000000000000000000..2f0d46c955af908d34eb4d1bef4e9b698c31255f --- /dev/null +++ b/backends/loongarch_init.c @@ -0,0 +1,62 @@ +/* Initialization of LoongArch specific backend library. + Copyright (C) 2022 Hengqi Chen + Copyright (C) 2023 OpenAnolis community LoongArch SIG. + Copyright (C) 2023 Loongson Technology Corporation Limted. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#define BACKEND loongarch_ +#define RELOC_PREFIX R_LARCH_ +#include "libebl_CPU.h" + +/* This defines the common reloc hooks based on loongarch_reloc.def. */ +#include "common-reloc.c" + + +Ebl * +loongarch_init (Elf *elf __attribute__ ((unused)), + GElf_Half machine __attribute__ ((unused)), + Ebl *eh) +{ + loongarch_init_reloc (eh); + HOOK (eh, reloc_simple_type); + HOOK (eh, machine_flag_check); + HOOK (eh, register_info); + HOOK (eh, core_note); + HOOK (eh, abi_cfi); + /* gcc/config/ #define DWARF_FRAME_REGISTERS. */ + eh->frame_nregs = 74; + HOOK (eh, check_special_symbol); + HOOK (eh, set_initial_registers_tid); + HOOK (eh, return_value_location); + HOOK (eh, unwind); + + return eh; +} diff --git a/backends/loongarch_initreg.c b/backends/loongarch_initreg.c new file mode 100644 index 0000000000000000000000000000000000000000..74cb62f5cfff594b13c6cb3dc59bdefd10b4c01c --- /dev/null +++ b/backends/loongarch_initreg.c @@ -0,0 +1,88 @@ +/* Fetch live process registers from TID. + Copyright (C) 2023 OpenAnolis community LoongArch SIG. + Copyright (C) 2023 Loongson Technology Corporation Limted. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "system.h" +#include +#if defined __loongarch__ && defined __linux__ +# include +# include +# include +#endif + +#define BACKEND loongarch_ +#include "libebl_CPU.h" + +bool +loongarch_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), + ebl_tid_registers_t *setfunc __attribute__ ((unused)), + void *arg __attribute__ ((unused))) +{ +#if !defined __loongarch__ || !defined __linux__ + return false; +#else /* __loongarch__ */ + + /* General registers. */ + struct user_regs_struct gregs; + struct iovec iovec; + iovec.iov_base = &gregs; + iovec.iov_len = sizeof (gregs); + if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0) + return false; + + /* $r0 is constant 0. */ + Dwarf_Word zero = 0; + if (! setfunc (0, 1, &zero, arg)) + return false; + + /* $r1-$r31. */ + if (! setfunc (1, 32, (Dwarf_Word *) &gregs.regs[1], arg)) + return false; + + /* PC. */ + if (! setfunc (-1, 1, (Dwarf_Word *) &gregs.csr_era, arg)) + return false; + + /* Floating-point registers (only 64bits are used). */ + struct user_fp_struct fregs; + iovec.iov_base = &fregs; + iovec.iov_len = sizeof (fregs); + if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0) + return false; + + /* $f0-$f31 */ + if (! setfunc (32, 32, (Dwarf_Word *) &fregs.fpr[0], arg)) + return false; + + return true; +#endif /* __loongarch__ */ +} diff --git a/backends/loongarch_regs.c b/backends/loongarch_regs.c new file mode 100644 index 0000000000000000000000000000000000000000..4a4b20524ca028b329e562fa45c7f964add1f71e --- /dev/null +++ b/backends/loongarch_regs.c @@ -0,0 +1,141 @@ +/* Register names and numbers for LoongArch DWARF. + Copyright (C) 2023 OpenAnolis community LoongArch SIG. + Copyright (C) 2023 Loongson Technology Corporation Limted. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#define BACKEND loongarch_ +#include "libebl_CPU.h" + +ssize_t +loongarch_register_info (Ebl *ebl, int regno, char *name, size_t namelen, + const char **prefix, const char **setname, + int *bits, int *type) +{ + if (name == NULL) + return 64; + + *prefix = ""; + + if (regno < 32) + { + *setname = "integer"; + *type = DW_ATE_signed; + *bits = ebl->class == ELFCLASS64 ? 64 : 32; + } + else + { + *setname = "FPU"; + *type = DW_ATE_float; + *bits = 64; + } + + switch (regno) + { + case 0: + return stpcpy (name, "zero") + 1 - name; + + case 1: + *type = DW_ATE_address; + return stpcpy (name, "ra") + 1 - name; + + case 2: + *type = DW_ATE_address; + return stpcpy (name, "tp") + 1 - name; + + case 3: + *type = DW_ATE_address; + return stpcpy (name, "sp") + 1 - name; + + case 4 ... 11: + name[0] = 'a'; + name[1] = regno - 4 + '0'; + namelen = 2; + break; + + case 12 ... 20: + name[0] = 't'; + name[1] = regno - 12 + '0'; + namelen = 2; + break; + + case 21: + return stpcpy (name, "u0") + 1 - name; + + case 22: + *type = DW_ATE_address; + return stpcpy (name, "fp") + 1 - name; + + case 23 ... 31: + name[0] = 's'; + name[1] = regno - 23 + '0'; + namelen = 2; + break; + + case 32 ... 39: + name[0] = 'f'; + name[1] = 'a'; + name[2] = regno - 32 + '0'; + namelen = 3; + break; + + case 40 ... 49: + name[0] = 'f'; + name[1] = 't'; + name[2] = regno - 40 + '0'; + namelen = 3; + break; + + case 50 ... 55: + name[0] = 'f'; + name[1] = 't'; + name[2] = '1'; + name[3] = regno - 50 + '0'; + namelen = 4; + break; + + case 56 ... 63: + name[0] = 'f'; + name[1] = 's'; + name[2] = regno - 56 + '0'; + namelen = 3; + break; + + default: + *setname = NULL; + return 0; + } + + name[namelen++] = '\0'; + return namelen; +} diff --git a/backends/loongarch_reloc.def b/backends/loongarch_reloc.def new file mode 100644 index 0000000000000000000000000000000000000000..a39eefd96d7568019edcab62c5c6fa083f6bc1d2 --- /dev/null +++ b/backends/loongarch_reloc.def @@ -0,0 +1,130 @@ +/* List the relocation types for LoongArch. -*- C -*- + 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 . */ + +/* NAME, REL|EXEC|DYN */ + +RELOC_TYPE (NONE, EXEC|DYN) +RELOC_TYPE (32, REL|EXEC|DYN) +RELOC_TYPE (64, REL|EXEC|DYN) +RELOC_TYPE (RELATIVE, EXEC|DYN) +RELOC_TYPE (COPY, EXEC|DYN) +RELOC_TYPE (JUMP_SLOT, EXEC|DYN) +RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) +RELOC_TYPE (TLS_DTPMOD64, EXEC|DYN) +RELOC_TYPE (TLS_DTPREL32, EXEC|DYN) +RELOC_TYPE (TLS_DTPREL64, EXEC|DYN) +RELOC_TYPE (TLS_TPREL32, EXEC|DYN) +RELOC_TYPE (TLS_TPREL64, EXEC|DYN) +RELOC_TYPE (IRELATIVE, EXEC|DYN) +RELOC_TYPE (MARK_LA, REL) +RELOC_TYPE (MARK_PCREL, REL) +RELOC_TYPE (SOP_PUSH_PCREL, REL) +RELOC_TYPE (SOP_PUSH_ABSOLUTE, REL) +RELOC_TYPE (SOP_PUSH_DUP, REL) +RELOC_TYPE (SOP_PUSH_GPREL, REL) +RELOC_TYPE (SOP_PUSH_TLS_TPREL, REL) +RELOC_TYPE (SOP_PUSH_TLS_GOT, REL) +RELOC_TYPE (SOP_PUSH_TLS_GD, REL) +RELOC_TYPE (SOP_PUSH_PLT_PCREL, REL) +RELOC_TYPE (SOP_ASSERT, REL) +RELOC_TYPE (SOP_NOT, REL) +RELOC_TYPE (SOP_SUB, REL) +RELOC_TYPE (SOP_SL, REL) +RELOC_TYPE (SOP_SR, REL) +RELOC_TYPE (SOP_ADD, REL) +RELOC_TYPE (SOP_AND, REL) +RELOC_TYPE (SOP_IF_ELSE, REL) +RELOC_TYPE (SOP_POP_32_S_10_5, REL) +RELOC_TYPE (SOP_POP_32_U_10_12, REL) +RELOC_TYPE (SOP_POP_32_S_10_12, REL) +RELOC_TYPE (SOP_POP_32_S_10_16, REL) +RELOC_TYPE (SOP_POP_32_S_10_16_S2, REL) +RELOC_TYPE (SOP_POP_32_S_5_20, REL) +RELOC_TYPE (SOP_POP_32_S_0_5_10_16_S2, REL) +RELOC_TYPE (SOP_POP_32_S_0_10_10_16_S2, REL) +RELOC_TYPE (SOP_POP_32_U, REL) +RELOC_TYPE (ADD8, REL) +RELOC_TYPE (ADD16, REL) +RELOC_TYPE (ADD24, REL) +RELOC_TYPE (ADD32, REL) +RELOC_TYPE (ADD64, REL) +RELOC_TYPE (SUB8, REL) +RELOC_TYPE (SUB16, REL) +RELOC_TYPE (SUB24, REL) +RELOC_TYPE (SUB32, REL) +RELOC_TYPE (SUB64, REL) +RELOC_TYPE (GNU_VTINHERIT, REL) +RELOC_TYPE (GNU_VTENTRY, REL) + +/* reserved 59-63 */ + +RELOC_TYPE (B16, REL) +RELOC_TYPE (B21, REL) +RELOC_TYPE (B26, REL) +RELOC_TYPE (ABS_HI20, REL) +RELOC_TYPE (ABS_LO12, REL) +RELOC_TYPE (ABS64_LO20, REL) +RELOC_TYPE (ABS64_HI12, REL) +RELOC_TYPE (PCALA_HI20, REL) +RELOC_TYPE (PCALA_LO12, REL) +RELOC_TYPE (PCALA64_LO20, REL) +RELOC_TYPE (PCALA64_HI12, REL) +RELOC_TYPE (GOT_PC_HI20, REL) +RELOC_TYPE (GOT_PC_LO12, REL) +RELOC_TYPE (GOT64_PC_LO20, REL) +RELOC_TYPE (GOT64_PC_HI12, REL) +RELOC_TYPE (GOT_HI20, REL) +RELOC_TYPE (GOT_LO12, REL) +RELOC_TYPE (GOT64_LO20, REL) +RELOC_TYPE (GOT64_HI12, REL) +RELOC_TYPE (TLS_LE_HI20, REL) +RELOC_TYPE (TLS_LE_LO12, REL) +RELOC_TYPE (TLS_LE64_LO20, REL) +RELOC_TYPE (TLS_LE64_HI12, REL) +RELOC_TYPE (TLS_IE_PC_HI20, REL) +RELOC_TYPE (TLS_IE_PC_LO12, REL) +RELOC_TYPE (TLS_IE64_PC_LO20, REL) +RELOC_TYPE (TLS_IE64_PC_HI12, REL) +RELOC_TYPE (TLS_IE_HI20, REL) +RELOC_TYPE (TLS_IE_LO12, REL) +RELOC_TYPE (TLS_IE64_LO20, REL) +RELOC_TYPE (TLS_IE64_HI12, REL) +RELOC_TYPE (TLS_LD_PC_HI20, REL) +RELOC_TYPE (TLS_LD_HI20, REL) +RELOC_TYPE (TLS_GD_PC_HI20, REL) +RELOC_TYPE (TLS_GD_HI20, REL) +RELOC_TYPE (32_PCREL, REL) +RELOC_TYPE (RELAX, REL) +RELOC_TYPE (DELETE, REL) +RELOC_TYPE (ALIGN, REL) +RELOC_TYPE (PCREL20_S2, REL) +RELOC_TYPE (CFA, REL) +RELOC_TYPE (ADD6, REL) +RELOC_TYPE (SUB6, REL) +RELOC_TYPE (ADD_ULEB128, REL) +RELOC_TYPE (SUB_ULEB128, REL) +RELOC_TYPE (64_PCREL, REL) diff --git a/backends/loongarch_retval.c b/backends/loongarch_retval.c new file mode 100644 index 0000000000000000000000000000000000000000..23b33ed544425ab46450ce5d8fcd2c05e184368b --- /dev/null +++ b/backends/loongarch_retval.c @@ -0,0 +1,202 @@ +/* Function return value location for Linux/LoongArch ABI. + Copyright (C) 2013 Red Hat, Inc. + Copyright (C) 2023 OpenAnolis community LoongArch SIG. + Copyright (C) 2023 Loongson Technology Corporation Limited. + + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include +#include + +#define BACKEND loongarch_ +#include "libebl_CPU.h" + +static int +dwarf_bytesize_aux (Dwarf_Die *die, Dwarf_Word *sizep) +{ + int bits; + if (((bits = 8 * dwarf_bytesize (die)) < 0 + && (bits = dwarf_bitsize (die)) < 0) + || bits % 8 != 0) + return -1; + + *sizep = bits / 8; + return 0; +} + +static int +pass_in_gpr (const Dwarf_Op **locp, Dwarf_Word size) +{ + static const Dwarf_Op loc[] = + { + { .atom = DW_OP_reg4 }, { .atom = DW_OP_piece, .number = 8 }, + { .atom = DW_OP_reg5 }, { .atom = DW_OP_piece, .number = 8 } + }; + + *locp = loc; + return size <= 8 ? 1 : 4; +} + +static int +pass_by_ref (const Dwarf_Op **locp) +{ + static const Dwarf_Op loc[] = { { .atom = DW_OP_breg4 } }; + + *locp = loc; + return 1; +} + +static int +pass_in_fpr (const Dwarf_Op **locp, Dwarf_Word size) +{ + static const Dwarf_Op loc[] = + { + { .atom = DW_OP_regx, .number = 32 }, + { .atom = DW_OP_piece, .number = 8 }, + { .atom = DW_OP_regx, .number = 33 }, + { .atom = DW_OP_piece, .number = 8 } + }; + + *locp = loc; + return size <= 8 ? 1 : 4; +} + +int +loongarch_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 typedie; + int tag = dwarf_peeled_die_type (functypedie, &typedie); + if (tag <= 0) + return tag; + + Dwarf_Word size = (Dwarf_Word)-1; + + /* If the argument type is a Composite Type that is larger than 16 + bytes, then the argument is copied to memory allocated by the + caller and the argument is replaced by a pointer to the copy. */ + if (tag == DW_TAG_structure_type || tag == DW_TAG_union_type + || tag == DW_TAG_class_type || tag == DW_TAG_array_type) + { + if (dwarf_aggregate_size (&typedie, &size) < 0) + return -1; + + /* Aggregates larger than 2*GRLEN bits are passed by reference. */ + if (size > 16) + return pass_by_ref (locp); + /* Aggregates whose total size is no more than GRLEN bits are passed in + a register. Aggregates whose total size is no more than 2*GRLEN bits + are passed in a pair of registers. */ + else + return pass_in_gpr (locp, size); + } + + if (tag == DW_TAG_base_type || dwarf_is_pointer (tag)) + { + if (dwarf_bytesize_aux (&typedie, &size) < 0) + { + if (dwarf_is_pointer (tag)) + size = 8; + else + return -1; + } + + Dwarf_Attribute attr_mem; + 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; + + switch (encoding) + { + case DW_ATE_boolean: + case DW_ATE_signed: + case DW_ATE_unsigned: + case DW_ATE_unsigned_char: + case DW_ATE_signed_char: + /* Scalars that are at most GRLEN bits wide are passed in a single + argument register. Scalars that are 2*GRLEN bits wide are + passed in a pair of argument registers. Scalars wider than + 2*GRLEN are passed by reference. */ + return pass_in_gpr (locp, size); + + case DW_ATE_float: + /* A real floating-point argument is passed in a floating-point + argument register if it is no more than FLEN bits wide, + otherwise it is passed according to the integer calling + convention. */ + switch (size) + { + case 4: /* single */ + case 8: /* double */ + return pass_in_fpr (locp, size); + + case 16: /* quad */ + return pass_in_gpr (locp, size); + + default: + return -2; + } + + case DW_ATE_complex_float: + /* A complex floating-point number is passed as though it were a + struct containing two floating-point reals. */ + switch (size) + { + case 8: /* float _Complex */ + case 16: /* double _Complex */ + return pass_in_fpr (locp, size); + + case 32: /* long double _Complex */ + return pass_by_ref (locp); + + default: + return -2; + } + } + + return -2; + } + else + return pass_in_gpr (locp, size); + } + + *locp = NULL; + return 0; +} diff --git a/backends/loongarch_symbol.c b/backends/loongarch_symbol.c new file mode 100644 index 0000000000000000000000000000000000000000..5ce55badc569283ab16eabaa7ea6b8656bdf1689 --- /dev/null +++ b/backends/loongarch_symbol.c @@ -0,0 +1,116 @@ +/* LoongArch specific symbolic name handling. + Copyright (C) 2022 Hengqi Chen + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#define BACKEND loongarch_ +#include "libebl_CPU.h" + + +/* Check for the simple reloc types. */ +Elf_Type +loongarch_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, + int *addsub) +{ + switch (type) + { + case R_LARCH_32: + return ELF_T_WORD; + case R_LARCH_64: + return ELF_T_XWORD; + case R_LARCH_ADD16: + *addsub = 1; + return ELF_T_HALF; + case R_LARCH_ADD32: + *addsub = 1; + return ELF_T_WORD; + case R_LARCH_ADD64: + *addsub = 1; + return ELF_T_XWORD; + case R_LARCH_SUB16: + *addsub = -1; + return ELF_T_HALF; + case R_LARCH_SUB32: + *addsub = -1; + return ELF_T_WORD; + case R_LARCH_SUB64: + *addsub = -1; + return ELF_T_XWORD; + default: + return ELF_T_NUM; + } +} + +bool +loongarch_machine_flag_check (GElf_Word flags) +{ + return ((flags &~ (EF_LARCH_ABI_MODIFIER_MASK + | EF_LARCH_OBJABI_V1)) == 0); +} + +/* Check whether given symbol's st_value and st_size are OK despite failing + normal checks. */ +bool +loongarch_check_special_symbol (Elf *elf, const GElf_Sym *sym, + const char *name, const GElf_Shdr *destshdr) +{ + if (name != NULL + && strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0) + { + size_t shstrndx; + if (elf_getshdrstrndx (elf, &shstrndx) != 0) + return false; + const char *sname = elf_strptr (elf, shstrndx, destshdr->sh_name); + if (sname != NULL + && (strcmp (sname, ".got") == 0 || strcmp (sname, ".got.plt") == 0)) + { + Elf_Scn *scn = NULL; + while ((scn = elf_nextscn (elf, scn)) != NULL) + { + GElf_Shdr shdr_mem; + GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + if (shdr != NULL) + { + sname = elf_strptr (elf, shstrndx, shdr->sh_name); + if (sname != NULL && strcmp (sname, ".got") == 0) + return (sym->st_value >= shdr->sh_addr + && sym->st_value < shdr->sh_addr + shdr->sh_size); + } + } + } + } + + return false; +} diff --git a/backends/loongarch_unwind.c b/backends/loongarch_unwind.c new file mode 100644 index 0000000000000000000000000000000000000000..fb7480835d715e2cc4526233b2f484209d617938 --- /dev/null +++ b/backends/loongarch_unwind.c @@ -0,0 +1,84 @@ +/* Get previous frame state for an existing frame state. + Copyright (C) 2023 OpenAnolis community LoongArch SIG. + Copyright (C) 2023 Loongson Technology Corporation Limited. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#define BACKEND loongarch_ +#define RA_REG 1 +#define SP_REG 3 +#define FP_REG 22 + +#define RA_OFFSET 8 +#define FP_OFFSET 16 + +#include "libebl_CPU.h" + +/* There was no CFI. Maybe we happen to have a frame pointer and can unwind from that? */ + +bool +EBLHOOK(unwind) (Ebl *ebl __attribute__ ((unused)), Dwarf_Addr pc __attribute__ ((unused)), + ebl_tid_registers_t *setfunc, ebl_tid_registers_get_t *getfunc, + ebl_pid_memory_read_t *readfunc, void *arg, + bool *signal_framep __attribute__ ((unused))) +{ + Dwarf_Word fp, ra, sp; + + if (!getfunc(RA_REG, 1, &ra, arg)) + return false; + + if (ra == 0 || !setfunc(-1, 1, &ra, arg)) + return false; + + if (!getfunc(FP_REG, 1, &fp, arg)) + fp = 0; + + if (!getfunc(SP_REG, 1, &sp, arg)) + sp = 0; + + Dwarf_Word newRa, newFp, newSp; + + if (!readfunc(fp - RA_OFFSET, &newRa, arg)) + newRa = 0; + + if (!readfunc(fp - FP_OFFSET, &newFp, arg)) + newFp = 0; + + newSp = fp; + + // These are not fatal if they don't work. They will just prevent unwinding at the next frame. + setfunc(RA_REG, 1, &newRa, arg); + setfunc(FP_REG, 1, &newFp, arg); + setfunc(SP_REG, 1, &newSp, arg); + + // If the fp is invalid, we might still have a valid ra. + // But if the fp is valid, then the stack should be moving in the right direction. + return fp == 0 || newSp > sp; +} diff --git a/backends/m68k_retval.c b/backends/m68k_retval.c index a653ba3a87e7e80bae3f9d7079303713fe70ef2e..bf41f862dd7283427f5964be19e09e96fc03f029 100644 --- a/backends/m68k_retval.c +++ b/backends/m68k_retval.c @@ -96,15 +96,14 @@ m68k_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Word size; 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) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/ppc64_retval.c b/backends/ppc64_retval.c index eb1c11ec6da36a879fa8b1365cfd6c52b91d2108..1c20c89072683f778e874efca9fbe12e70ad94a6 100644 --- a/backends/ppc64_retval.c +++ b/backends/ppc64_retval.c @@ -100,14 +100,13 @@ ppc64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { 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) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/ppc_retval.c b/backends/ppc_retval.c index 39b42da12fbd7836e2bfc1578c1c687b05d5e86b..5144712b211358a525a6c83dc588cffcb5dc7f2a 100644 --- a/backends/ppc_retval.c +++ b/backends/ppc_retval.c @@ -112,14 +112,13 @@ ppc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { 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) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/riscv_reloc.def b/backends/riscv_reloc.def index 2bd3513e604d9b89e451becc1a911e395a757ce8..f52f6489e3c72c885234ce78cb90b21292bbe342 100644 --- a/backends/riscv_reloc.def +++ b/backends/riscv_reloc.def @@ -81,3 +81,7 @@ RELOC_TYPE (SET8, REL) RELOC_TYPE (SET16, REL) RELOC_TYPE (SET32, REL) RELOC_TYPE (32_PCREL, REL) +RELOC_TYPE (IRELATIVE, EXEC|DYN) +RELOC_TYPE (PLT32, REL) +RELOC_TYPE (SET_ULEB128, REL) +RELOC_TYPE (SUB_ULEB128, REL) diff --git a/backends/riscv_retval.c b/backends/riscv_retval.c index 347614862f1bb643acccc69905ee1ac8c7debf9a..0a1e02f81cd2d697a6dcf7f91f4cba6e38c6be65 100644 --- a/backends/riscv_retval.c +++ b/backends/riscv_retval.c @@ -170,12 +170,11 @@ riscv_return_value_location_lp64ifd (int fp, Dwarf_Die *functypedie, return pass_in_gpr_lp64 (locp, size); } - if (tag == DW_TAG_base_type - || tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (tag == DW_TAG_base_type || dwarf_is_pointer (tag)) { if (dwarf_bytesize_aux (&typedie, &size) < 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/backends/s390_retval.c b/backends/s390_retval.c index 2043f9855c19319e0bbd9e3f0126a95924f0f137..0a01d27f41e91deaa3b0f8c22801ae9e45c43a54 100644 --- a/backends/s390_retval.c +++ b/backends/s390_retval.c @@ -91,8 +91,7 @@ s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Die cudie; uint8_t asize; @@ -103,7 +102,7 @@ s390_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) if (dwarf_formudata (dwarf_attr (typedie, DW_AT_byte_size, &attr_mem), &size) != 0) { - if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag)) size = asize; else return -1; diff --git a/backends/sh_retval.c b/backends/sh_retval.c index 33d7d964bd7b18887e35abbf5892e52ba5aa7aac..eac83b705e7ad0c7319a4ca73a6537ad1e9b9446 100644 --- a/backends/sh_retval.c +++ b/backends/sh_retval.c @@ -88,14 +88,13 @@ sh_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { 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) + if (dwarf_is_pointer (tag)) size = 4; else return -1; diff --git a/backends/sparc_reloc.def b/backends/sparc_reloc.def index 7cd5ce968eab8da403a4ff6f841147a31e8fe9f4..f0eeb5c67923b204771edef322b9ea95df0ffd6f 100644 --- a/backends/sparc_reloc.def +++ b/backends/sparc_reloc.def @@ -28,7 +28,7 @@ /* NAME, REL|EXEC|DYN */ -RELOC_TYPE (NONE, REL) +RELOC_TYPE (NONE, REL|EXEC|DYN) RELOC_TYPE (8, REL) RELOC_TYPE (16, REL) RELOC_TYPE (32, REL|DYN) diff --git a/backends/sparc_retval.c b/backends/sparc_retval.c index fb81cdceaf34c59436fb5040d8aa81d58b0f9c0b..8b3fb629fc92685b8114ff302625cd7ad6eb8bec 100644 --- a/backends/sparc_retval.c +++ b/backends/sparc_retval.c @@ -95,8 +95,7 @@ sparc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { Dwarf_Attribute attr_mem; if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size, @@ -104,7 +103,7 @@ sparc_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) { uint8_t asize; Dwarf_Die cudie; - if ((tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type) + if (dwarf_is_pointer (tag) && dwarf_diecu (typedie, &cudie, &asize, NULL) != NULL) size = asize; else diff --git a/backends/x86_64_retval.c b/backends/x86_64_retval.c index f9114cb14858708d4e3fb1fed4887379f11aedf4..c29ee0e17851a577818039499eeb864f3a766197 100644 --- a/backends/x86_64_retval.c +++ b/backends/x86_64_retval.c @@ -104,14 +104,13 @@ x86_64_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp) case DW_TAG_base_type: case DW_TAG_enumeration_type: - case DW_TAG_pointer_type: - case DW_TAG_ptr_to_member_type: + CASE_POINTER: { 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) + { + if (dwarf_is_pointer (tag)) size = 8; else return -1; diff --git a/config/ChangeLog b/config/ChangeLog index c63caa0cef44c93176a977dd4d906e8eceb78c40..ce1f74f621aa42cf981e7047b0c6df3e1391468d 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,8 @@ +2023-02-21 Mark Wielaard + + * eu.am (USE_AFTER_FREE3_WARNING): Define. + (AM_CFLAGS): Use USE_AFTER_FREE3_WARNING. + 2022-10-02 Mark Wielaard * elfutils.spec.in: Update for 0.188. diff --git a/config/ar-lib b/config/ar-lib new file mode 100644 index 0000000000000000000000000000000000000000..c349042c3facd4c50f994acbb71399b8a0415d4f --- /dev/null +++ b/config/ar-lib @@ -0,0 +1,271 @@ +#! /bin/sh +# Wrapper for Microsoft lib.exe + +me=ar-lib +scriptversion=2019-07-04.01; # UTC + +# Copyright (C) 2010-2021 Free Software Foundation, Inc. +# Written by Peter Rosin . +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + + +# func_error message +func_error () +{ + echo "$me: $1" 1>&2 + exit 1 +} + +file_conv= + +# func_file_conv build_file +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv in + mingw) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin | msys) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_at_file at_file operation archive +# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE +# for each of them. +# When interpreting the content of the @FILE, do NOT use func_file_conv, +# since the user would need to supply preconverted file names to +# binutils ar, at least for MinGW. +func_at_file () +{ + operation=$2 + archive=$3 + at_file_contents=`cat "$1"` + eval set x "$at_file_contents" + shift + + for member + do + $AR -NOLOGO $operation:"$member" "$archive" || exit $? + done +} + +case $1 in + '') + func_error "no command. Try '$0 --help' for more information." + ;; + -h | --h*) + cat <. +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config/config.guess b/config/config.guess new file mode 100644 index 0000000000000000000000000000000000000000..c7f17e8fb9787eb359cce8caf87c5615c0494482 --- /dev/null +++ b/config/config.guess @@ -0,0 +1,1768 @@ +#!/usr/bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2022 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-05-25' + +# 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. +# +# This program 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 . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2022 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config/config.rpath b/config/config.rpath new file mode 100644 index 0000000000000000000000000000000000000000..1e1ab6790657fd39add7c5b487ff50fcc98b0cff --- /dev/null +++ b/config/config.rpath @@ -0,0 +1,684 @@ +#! /bin/sh +# Output a system dependent set of variables, describing how to set the +# run time search path of shared libraries in an executable. +# +# Copyright 1996-2022 Free Software Foundation, Inc. +# Taken from GNU libtool, 2001 +# Originally by Gordon Matzigkeit , 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# The first argument passed to this file is the canonical host specification, +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld +# should be set by the caller. +# +# The set of defined variables is at the end of this script. + +# Known limitations: +# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer +# than 256 bytes, otherwise the compiler driver will dump core. The only +# known workaround is to choose shorter directory names for the build +# directory and/or the installation directory. + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +shrext=.so + +host="$1" +host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# Code taken from libtool.m4's _LT_CC_BASENAME. + +for cc_temp in $CC""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` + +# Code taken from libtool.m4's _LT_COMPILER_PIC. + +wl= +if test "$GCC" = yes; then + wl='-Wl,' +else + case "$host_os" in + aix*) + wl='-Wl,' + ;; + mingw* | cygwin* | pw32* | os2* | cegcc*) + ;; + hpux9* | hpux10* | hpux11*) + wl='-Wl,' + ;; + irix5* | irix6* | nonstopux*) + wl='-Wl,' + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + ecc*) + wl='-Wl,' + ;; + icc* | ifort*) + wl='-Wl,' + ;; + lf95*) + wl='-Wl,' + ;; + nagfor*) + wl='-Wl,-Wl,,' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + wl='-Wl,' + ;; + ccc*) + wl='-Wl,' + ;; + xl* | bgxl* | bgf* | mpixl*) + wl='-Wl,' + ;; + como) + wl='-lopt=' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + wl= + ;; + *Sun\ C*) + wl='-Wl,' + ;; + esac + ;; + esac + ;; + newsos6) + ;; + *nto* | *qnx*) + ;; + osf3* | osf4* | osf5*) + wl='-Wl,' + ;; + rdos*) + ;; + solaris*) + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + wl='-Qoption ld ' + ;; + *) + wl='-Wl,' + ;; + esac + ;; + sunos4*) + wl='-Qoption ld ' + ;; + sysv4 | sysv4.2uw2* | sysv4.3*) + wl='-Wl,' + ;; + sysv4*MP*) + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + wl='-Wl,' + ;; + unicos*) + wl='-Wl,' + ;; + uts4*) + ;; + esac +fi + +# Code taken from libtool.m4's _LT_LINKER_SHLIBS. + +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no + +case "$host_os" in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + case "$host_os" in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + cygwin* | mingw* | pw32* | cegcc*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + haiku*) + ;; + interix[3-9]*) + hardcode_direct=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + netbsd*) + ;; + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + else + ld_shlibs=no + fi + ;; + esac + ;; + sunos4*) + hardcode_direct=yes + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + : + else + ld_shlibs=no + fi + ;; + esac + if test "$ld_shlibs" = no; then + hardcode_libdir_flag_spec= + fi +else + case "$host_os" in + aix3*) + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + else + aix_use_runtimelinking=no + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + fi + hardcode_direct=yes + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + fi + # Begin _LT_AC_SYS_LIBPATH_AIX. + echo 'int main () { return 0; }' > conftest.c + ${CC} ${LDFLAGS} conftest.c -o conftest + aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` + fi + if test -z "$aix_libpath"; then + aix_libpath="/usr/lib:/lib" + fi + rm -f conftest.c conftest + # End _LT_AC_SYS_LIBPATH_AIX. + if test "$aix_use_runtimelinking" = yes; then + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + else + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + fi + fi + ;; + amigaos*) + case "$host_cpu" in + powerpc) + ;; + m68k) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + bsdi[45]*) + ;; + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + libext=lib + ;; + darwin* | rhapsody*) + hardcode_direct=no + if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then + : + else + ld_shlibs=no + fi + ;; + dgux*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + freebsd2.[01]*) + hardcode_direct=yes + hardcode_minus_L=yes + ;; + freebsd* | dragonfly* | midnightbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + hpux9*) + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + hpux10*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + hpux11*) + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + ;; + *) + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + irix5* | irix6* | nonstopux*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + netbsd*) + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + ;; + newsos6) + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + *nto* | *qnx*) + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + osf3*) + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + osf4* | osf5*) + if test "$GCC" = yes; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + # Both cc and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + solaris*) + hardcode_libdir_flag_spec='-R$libdir' + ;; + sunos4*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + sysv4) + case $host_vendor in + sni) + hardcode_direct=yes # is this really true??? + ;; + siemens) + hardcode_direct=no + ;; + motorola) + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + ;; + sysv4.3*) + ;; + sysv4*MP*) + if test -d /usr/nec; then + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + ;; + sysv5* | sco3.2v5* | sco5v6*) + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + ;; + uts4*) + hardcode_libdir_flag_spec='-L$libdir' + ;; + *) + ld_shlibs=no + ;; + esac +fi + +# Check dynamic linker characteristics +# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. +# Unlike libtool.m4, here we don't care about _all_ names of the library, but +# only about the one the linker finds when passed -lNAME. This is the last +# element of library_names_spec in libtool.m4, or possibly two of them if the +# linker has special search rules. +library_names_spec= # the last element of library_names_spec in libtool.m4 +libname_spec='lib$name' +case "$host_os" in + aix3*) + library_names_spec='$libname.a' + ;; + aix[4-9]*) + library_names_spec='$libname$shrext' + ;; + amigaos*) + case "$host_cpu" in + powerpc*) + library_names_spec='$libname$shrext' ;; + m68k) + library_names_spec='$libname.a' ;; + esac + ;; + beos*) + library_names_spec='$libname$shrext' + ;; + bsdi[45]*) + library_names_spec='$libname$shrext' + ;; + cygwin* | mingw* | pw32* | cegcc*) + shrext=.dll + library_names_spec='$libname.dll.a $libname.lib' + ;; + darwin* | rhapsody*) + shrext=.dylib + library_names_spec='$libname$shrext' + ;; + dgux*) + library_names_spec='$libname$shrext' + ;; + freebsd[23].*) + library_names_spec='$libname$shrext$versuffix' + ;; + freebsd* | dragonfly* | midnightbsd*) + library_names_spec='$libname$shrext' + ;; + gnu*) + library_names_spec='$libname$shrext' + ;; + haiku*) + library_names_spec='$libname$shrext' + ;; + hpux9* | hpux10* | hpux11*) + case $host_cpu in + ia64*) + shrext=.so + ;; + hppa*64*) + shrext=.sl + ;; + *) + shrext=.sl + ;; + esac + library_names_spec='$libname$shrext' + ;; + interix[3-9]*) + library_names_spec='$libname$shrext' + ;; + irix5* | irix6* | nonstopux*) + library_names_spec='$libname$shrext' + case "$host_os" in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; + *) libsuff= shlibsuff= ;; + esac + ;; + esac + ;; + linux*oldld* | linux*aout* | linux*coff*) + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + library_names_spec='$libname$shrext' + ;; + knetbsd*-gnu) + library_names_spec='$libname$shrext' + ;; + netbsd*) + library_names_spec='$libname$shrext' + ;; + newsos6) + library_names_spec='$libname$shrext' + ;; + *nto* | *qnx*) + library_names_spec='$libname$shrext' + ;; + openbsd*) + library_names_spec='$libname$shrext$versuffix' + ;; + os2*) + libname_spec='$name' + shrext=.dll + library_names_spec='$libname.a' + ;; + osf3* | osf4* | osf5*) + library_names_spec='$libname$shrext' + ;; + rdos*) + ;; + solaris*) + library_names_spec='$libname$shrext' + ;; + sunos4*) + library_names_spec='$libname$shrext$versuffix' + ;; + sysv4 | sysv4.3*) + library_names_spec='$libname$shrext' + ;; + sysv4*MP*) + library_names_spec='$libname$shrext' + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + library_names_spec='$libname$shrext' + ;; + tpf*) + library_names_spec='$libname$shrext' + ;; + uts4*) + library_names_spec='$libname$shrext' + ;; +esac + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` +shlibext=`echo "$shrext" | sed -e 's,^\.,,'` +escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` +escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` + +LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2022 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x$basic_os != x +then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-${kernel:+$kernel-}$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config/depcomp b/config/depcomp new file mode 100644 index 0000000000000000000000000000000000000000..715e34311ed2d2dbff881aedc7e25b81db54614c --- /dev/null +++ b/config/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2021 Free Software Foundation, Inc. + +# This program 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 2, or (at your option) +# any later version. + +# This program 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in index c444d1f50148099a1f95b9d928f26d80e02a5c45..67e88cb5cef24b2ae7c80d28ca140ee46d832821 100644 --- a/config/elfutils.spec.in +++ b/config/elfutils.spec.in @@ -233,7 +233,7 @@ fi %files %license COPYING COPYING-GPLV2 COPYING-LGPLV3 doc/COPYING-GFDL -%doc README TODO CONTRIBUTING +%doc README TODO CONTRIBUTING SECURITY %{_bindir}/eu-addr2line %{_bindir}/eu-ar %{_bindir}/eu-elfclassify @@ -341,6 +341,35 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Nov 3 2023 Mark Wielaard 0.190-1 +- CONTRIBUTING: Switch from real name policy to known identity policy. + Updated ChangeLog policy (no more separate ChangeLog files). + There is a SECURITY bug policy now. The default branch is now 'main'. +- libelf: Add RELR support. +- libdw: Recognize .debug_[ct]u_index sections. +- readelf: Support readelf -Ds, --use-dynamic --symbol. + Support .gdb_index version 9 +- scrlines: New tool that compiles a list of source files associated + with a specified dwarf/elf file. +- debuginfod: Schema change (reindexing required, sorry!) for a 60% + compression in filename representation, which was a large + part of the sqlite index; also, more deliberate sqlite + -wal management during scanning using the --scan-checkpoint option. +- backends: Various LoongArch updates. + +* Fri Mar 3 2023 Mark Wielaard 0.189-1 +- configure: eu-nm, eu-addr2line and eu-stack can provide demangled + symbols when linked with libstdc++. Use --disable-demangler to disable. + A new option --enable-sanitize-memory has been added for msan sanitizer + support. +- libelf: elf_compress now supports ELFCOMPRESS_ZSTD when build + against libzstd +- libdwfl: dwfl_module_return_value_location now returns 0 (no return + type) for DIEs that point to a DW_TAG_unspecified_type. +- elfcompress: -t, --type= now support zstd if libelf has been build + with ELFCOMPRESS_ZSTD support. +- backends: Add support for LoongArch and Synopsys ARCv2 processors. + * Wed Nov 2 2022 Mark Wielaard 0.188-1 - readelf: Add -D, --use-dynamic option. - debuginfod-client: Add $DEBUGINFOD_HEADERS_FILE setting to supply diff --git a/config/eu.am b/config/eu.am index c3cefe7e1e7edf7a1d3dd5642a575b7829e743ae..e6c241f9d88ad4dc4c4976d3b15ca52bf91c6e76 100644 --- a/config/eu.am +++ b/config/eu.am @@ -1,6 +1,7 @@ ## Common automake fragments for elfutils subdirectory makefiles. ## ## Copyright (C) 2010, 2014, 2016 Red Hat, Inc. +## Copyright (C) 2023, Mark J. Wielaard ## ## This file is part of elfutils. ## @@ -87,10 +88,17 @@ else NO_PACKED_NOT_ALIGNED_WARNING= endif +if HAVE_USE_AFTER_FREE3_WARNING +USE_AFTER_FREE3_WARNING=-Wuse-after-free=3 +else +USE_AFTER_FREE3_WARNING= +endif + AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \ -Wold-style-definition -Wstrict-prototypes $(TRAMPOLINES_WARNING) \ $(LOGICAL_OP_WARNING) $(DUPLICATED_COND_WARNING) \ $(NULL_DEREFERENCE_WARNING) $(IMPLICIT_FALLTHROUGH_WARNING) \ + $(USE_AFTER_FREE3_WARNING) \ $(if $($(*F)_no_Werror),,-Werror) \ $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \ $(if $($(*F)_no_Wstack_usage),,$(STACK_USAGE_WARNING)) \ diff --git a/config/install-sh b/config/install-sh new file mode 100644 index 0000000000000000000000000000000000000000..ec298b53740270ce82b326c4c2deaa5dcdec4596 --- /dev/null +++ b/config/install-sh @@ -0,0 +1,541 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2020-11-14.01; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. + -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config/known-dwarf.awk b/config/known-dwarf.awk old mode 100755 new mode 100644 diff --git a/config/libelf.pc.in b/config/libelf.pc.in index 48f3f0211fab7a0db15c96129b33b46c9e0b06e4..0d2ce9689a41915144a511dd6b235974a8eddbf6 100644 --- a/config/libelf.pc.in +++ b/config/libelf.pc.in @@ -11,4 +11,4 @@ URL: http://elfutils.org/ Libs: -L${libdir} -lelf Cflags: -I${includedir} -Requires.private: zlib +Requires.private: zlib @LIBZSTD@ diff --git a/config/missing b/config/missing new file mode 100644 index 0000000000000000000000000000000000000000..1fe1611f18514b7174f3529145b56cdc51d48c7c --- /dev/null +++ b/config/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program 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 2, or (at your option) +# any later version. + +# This program 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config/test-driver b/config/test-driver new file mode 100644 index 0000000000000000000000000000000000000000..be73b80adf95515f3fc7cdc504facb29bc12e6b3 --- /dev/null +++ b/config/test-driver @@ -0,0 +1,153 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 2011-2021 Free Software Foundation, Inc. +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <"$log_file" +"$@" >>"$log_file" 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>"$log_file" + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/config/upload-release.sh b/config/upload-release.sh deleted file mode 100755 index ba43aa1f5975d00e7e5962e67e81f670f62e3b07..0000000000000000000000000000000000000000 --- a/config/upload-release.sh +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash - -# Must be run in the source directory. -# Should have passed make distcheck. -# And all final changes should already have been pushed. -# Backup copy will be created in $HOME/elfutils-$VERSION - -# Any error is fatal -set -e - -# We take one arguent, the version (e.g. 0.173) -if [ $# -ne 1 ]; then - echo "$0 (e.g. 0.169)" - exit 1 -fi - -VERSION="$1" - -echo Make sure the git repo is tagged, signed and pushed -echo git tag -s -m \"elfutils $VERSION release\" elfutils-$VERSION -echo git push --tags - -# Create a temporary directory and make sure it is cleaned up. -tempdir=$(mktemp -d) || exit -trap "rm -rf -- ${tempdir}" EXIT - -pushd "${tempdir}" - -# Checkout -git clone git://sourceware.org/git/elfutils.git -cd elfutils -git tag --verify "elfutils-${VERSION}" -git checkout -b "$VERSION" "elfutils-${VERSION}" - -# Create dist -autoreconf -v -f -i -./configure --enable-maintainer-mode -make -j$(nproc) && make dist - -# Sign -mkdir $VERSION -cp elfutils-$VERSION.tar.bz2 $VERSION/ -cd $VERSION/ -gpg -b elfutils-$VERSION.tar.bz2 -cd .. - -# Backup copy -cp -r $VERSION $HOME/elfutils-$VERSION - -# Upload -scp -r $VERSION sourceware.org:/sourceware/ftp/pub/elfutils/ -ssh sourceware.org "(cd /sourceware/ftp/pub/elfutils \ - && 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*)" - -# Cleanup -popd -trap - EXIT -exit diff --git a/config/ylwrap b/config/ylwrap new file mode 100644 index 0000000000000000000000000000000000000000..e8ec109fa26c0306dc1e234b84998b5ab4b460ca --- /dev/null +++ b/config/ylwrap @@ -0,0 +1,247 @@ +#! /bin/sh +# ylwrap - wrapper for lex/yacc invocations. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2021 Free Software Foundation, Inc. +# +# Written by Tom Tromey . +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +get_dirname () +{ + case $1 in + */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';; + # Otherwise, we want the empty string (not "."). + esac +} + +# guard FILE +# ---------- +# The CPP macro used to guard inclusion of FILE. +guard () +{ + printf '%s\n' "$1" \ + | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g' \ + -e 's/__*/_/g' +} + +# quote_for_sed [STRING] +# ---------------------- +# Return STRING (or stdin) quoted to be used as a sed pattern. +quote_for_sed () +{ + case $# in + 0) cat;; + 1) printf '%s\n' "$1";; + esac \ + | sed -e 's|[][\\.*]|\\&|g' +} + +case "$1" in + '') + echo "$0: No files given. Try '$0 --help' for more information." 1>&2 + exit 1 + ;; + --basedir) + basedir=$2 + shift 2 + ;; + -h|--h*) + cat <<\EOF +Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... + +Wrapper for lex/yacc invocations, renaming files as desired. + + INPUT is the input file + OUTPUT is one file PROG generates + DESIRED is the file we actually want instead of OUTPUT + PROGRAM is program to run + ARGS are passed to PROG + +Any number of OUTPUT,DESIRED pairs may be used. + +Report bugs to . +EOF + exit $? + ;; + -v|--v*) + echo "ylwrap $scriptversion" + exit $? + ;; +esac + + +# The input. +input=$1 +shift +# We'll later need for a correct munging of "#line" directives. +input_sub_rx=`get_dirname "$input" | quote_for_sed` +case $input in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input=`pwd`/$input + ;; +esac +input_rx=`get_dirname "$input" | quote_for_sed` + +# Since DOS filename conventions don't allow two dots, +# the DOS version of Bison writes out y_tab.c instead of y.tab.c +# and y_tab.h instead of y.tab.h. Test to see if this is the case. +y_tab_nodot=false +if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot=true +fi + +# The parser itself, the first file, is the destination of the .y.c +# rule in the Makefile. +parser=$1 + +# A sed program to s/FROM/TO/g for all the FROM/TO so that, for +# instance, we rename #include "y.tab.h" into #include "parse.h" +# during the conversion from y.tab.c to parse.c. +sed_fix_filenames= + +# Also rename header guards, as Bison 2.7 for instance uses its header +# guard in its implementation file. +sed_fix_header_guards= + +while test $# -ne 0; do + if test x"$1" = x"--"; then + shift + break + fi + from=$1 + # Handle y_tab.c and y_tab.h output by DOS + if $y_tab_nodot; then + case $from in + "y.tab.c") from=y_tab.c;; + "y.tab.h") from=y_tab.h;; + esac + fi + shift + to=$1 + shift + sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;" + sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;" +done + +# The program to run. +prog=$1 +shift +# Make any relative path in $prog absolute. +case $prog in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog=`pwd`/$prog ;; +esac + +dirname=ylwrap$$ +do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit $ret' +trap "ret=129; $do_exit" 1 +trap "ret=130; $do_exit" 2 +trap "ret=141; $do_exit" 13 +trap "ret=143; $do_exit" 15 +mkdir $dirname || exit 1 + +cd $dirname + +case $# in + 0) "$prog" "$input" ;; + *) "$prog" "$@" "$input" ;; +esac +ret=$? + +if test $ret -eq 0; then + for from in * + do + to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"` + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend '../'. + case $to in + [\\/]* | ?:[\\/]*) target=$to;; + *) target=../$to;; + esac + + # Do not overwrite unchanged header files to avoid useless + # recompilations. Always update the parser itself: it is the + # destination of the .y.c rule in the Makefile. Divert the + # output of all other files to a temporary file so we can + # compare them to existing versions. + if test $from != $parser; then + realtarget=$target + target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'` + fi + + # Munge "#line" or "#" directives. Don't let the resulting + # debug information point at an absolute srcdir. Use the real + # output file name, not yy.lex.c for instance. Adjust the + # include guards too. + sed -e "/^#/!b" \ + -e "s|$input_rx|$input_sub_rx|" \ + -e "$sed_fix_filenames" \ + -e "$sed_fix_header_guards" \ + "$from" >"$target" || ret=$? + + # Check whether files must be updated. + if test "$from" != "$parser"; then + if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then + echo "$to is unchanged" + rm -f "$target" + else + echo "updating $to" + mv -f "$target" "$realtarget" + fi + fi + else + # A missing file is only an error for the parser. This is a + # blatant hack to let us support using "yacc -d". If -d is not + # specified, don't fail when the header file is "missing". + if test "$from" = "$parser"; then + ret=1 + fi + fi + done +fi + +# Remove the directory. +cd .. +rm -rf $dirname + +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/configure.ac b/configure.ac index 59be27ac6c919c0c0a55ce7f8f71c728d263feaf..af5b6bf77dd2bd17fb4bb0695e83e55c6ffbbef9 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. dnl Configure input file for elfutils. -*-autoconf-*- dnl dnl Copyright (C) 1996-2019 Red Hat, Inc. -dnl Copyright (C) 2022 Mark J. Wielaard +dnl Copyright (C) 2022, 2023 Mark J. Wielaard dnl dnl This file is part of elfutils. dnl @@ -18,7 +18,7 @@ dnl GNU General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program. If not, see . -AC_INIT([elfutils],[0.188],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) +AC_INIT([elfutils],[0.190],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/]) dnl Workaround for older autoconf < 2.64 m4_ifndef([AC_PACKAGE_URL], @@ -45,7 +45,7 @@ fi AC_CONFIG_AUX_DIR([config]) AC_CONFIG_FILES([config/Makefile]) -AC_COPYRIGHT([Copyright (C) 1996-2022 The elfutils developers.]) +AC_COPYRIGHT([Copyright (C) 1996-2023 The elfutils developers.]) AC_PREREQ(2.63) dnl Minimum Autoconf version required. dnl We use GNU make extensions; automake 1.10 defaults to -Wportability. @@ -155,6 +155,29 @@ AC_SUBST([fpie_CFLAGS]) dso_LDFLAGS="-shared" +NO_UNDEFINED=-Wl,--no-undefined +AC_ARG_ENABLE([sanitize-memory], + AS_HELP_STRING([--enable-sanitize-memory], + [Use clang memory sanitizer]), + [use_msan=$enableval], [use_msan=no]) +if test "$use_msan" = yes; then + old_CFLAGS="$CFLAGS" + old_CXXFLAGS="$CXXFLAGS" + old_LDFLAGS="$LDFLAGS" + # -fsanitize=memory is not compatible with -D_FORTIFY_SOURCE, -Wl,-z,defs and --no-undefined + CFLAGS="$CFLAGS -fsanitize=memory -fsanitize-memory-track-origins -D_FORTIFY_SOURCE=0" + CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins -D_FORTIFY_SOURCE=0" + LDFLAGS="-shared" + AC_LINK_IFELSE([AC_LANG_SOURCE([int main (int argc, char **argv) { return 0; }])], use_msan=yes, use_msan=no) + AS_IF([test "x$use_msan" = xyes], + ac_cv_zdefs=no NO_UNDEFINED=, + AC_MSG_WARN([clang memory sanitizer not available]) + CFLAGS="$old_CFLAGS" CXXFLAGS="$old_CXXFLAGS") + LDFLAGS="$old_LDFLAGS" +fi +AC_SUBST(NO_UNDEFINED) +AM_CONDITIONAL(USE_MEMORY_SANITIZER, test "$use_msan" = yes) + ZDEFS_LDFLAGS="-Wl,-z,defs" AC_CACHE_CHECK([whether gcc supports $ZDEFS_LDFLAGS], ac_cv_zdefs, [dnl save_LDFLAGS="$LDFLAGS" @@ -420,10 +443,22 @@ 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]) +zstd_LIBS="$LIBS" +AC_SUBST([zstd_LIBS]) zip_LIBS="$LIBS" LIBS="$save_LIBS" AC_SUBST([zip_LIBS]) +dnl zstd compression support requires libzstd 1.4.0+ +AS_IF([test "x$with_zstd" = xyes], [ + PKG_PROG_PKG_CONFIG + PKG_CHECK_MODULES([ZSTD_COMPRESS],[libzstd >= 1.4.0], + [with_zstd_compress="yes"],[with_zstd_compress="no"])], + [with_zstd_compress="no"]) +AM_CONDITIONAL(USE_ZSTD_COMPRESS, test "x$with_zstd_compress" = "xyes") +AS_IF([test "x$with_zstd_compress" = "xyes"], + [AC_DEFINE([USE_ZSTD_COMPRESS], [1], [zstd compression support])]) + AC_CHECK_DECLS([memrchr, rawmemchr],[],[], [#define _GNU_SOURCE #include ]) @@ -443,16 +478,29 @@ AS_IF([test "x$ac_cv_func_mremap" = "xno"], AC_CHECK_HEADERS([error.h]) AC_CHECK_HEADERS([err.h]) +dnl for debuginfod concurrency heuristics +AC_CHECK_HEADERS([sched.h]) +AC_CHECK_FUNCS([sched_getaffinity]) +AC_CHECK_HEADERS([sys/resource.h]) +AC_CHECK_FUNCS([getrlimit]) + old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -D_GNU_SOURCE" AC_FUNC_STRERROR_R() CFLAGS="$old_CFLAGS" +AC_ARG_ENABLE([demangler], +AS_HELP_STRING([--disable-demangler], + [Disable libstdc++ demangle support]), + [], [enable_demangler=yes]) +AS_IF([test "x$enable_demangler" = xyes], 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") AS_IF([test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes"], - [enable_demangler=yes],[enable_demangler=no]) + [enable_demangler=yes], + [AC_MSG_ERROR([[__cxa_demangle not found in libstdc++, use --disable-demangler to disable demangler support.]])]), +AM_CONDITIONAL(DEMANGLE, false)) AC_ARG_ENABLE([textrelcheck], AS_HELP_STRING([--disable-textrelcheck], @@ -570,6 +618,23 @@ CFLAGS="$old_CFLAGS"]) AM_CONDITIONAL(HAVE_NO_PACKED_NOT_ALIGNED_WARNING, [test "x$ac_cv_no_packed_not_aligned" != "xno"]) +AC_CACHE_CHECK([whether the compiler accepts -Wuse-after-free=3], ac_cv_use_after_free3, [dnl +old_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Wuse-after-free=3 -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([])], + ac_cv_use_after_free3=yes, ac_cv_use_after_free3=no) +CFLAGS="$old_CFLAGS"]) +AM_CONDITIONAL(HAVE_USE_AFTER_FREE3_WARNING, + [test "x$ac_cv_use_after_free3" != "xno"]) + +AC_CACHE_CHECK([whether the compiler accepts -fno-addrsig], ac_cv_fno_addrsig, [dnl +old_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -fno-addrsig -Werror" +AC_COMPILE_IFELSE([AC_LANG_SOURCE([])], + ac_cv_fno_addrsig=yes, ac_cv_fno_addrsig=no) +CFLAGS="$old_CFLAGS"]) +AS_IF([test "x$ac_cv_fno_addrsig" = "xyes"], CFLAGS="$CFLAGS -fno-addrsig") + saved_LIBS="$LIBS" AC_SEARCH_LIBS([argp_parse], [argp]) LIBS="$saved_LIBS" @@ -744,6 +809,11 @@ fi AC_CHECK_PROG(HAVE_ZSTD, zstd, yes, no) AM_CONDITIONAL([HAVE_ZSTD],[test "x$HAVE_ZSTD" = "xyes"]) +# For tests that need to use C++11 +AX_CXX_COMPILE_STDCXX(11, noext, optional) +AS_IF([test "x$HAVE_CXX11" = "x1"], [HAVE_CXX11=yes], [HAVE_CXX11=no]) +AM_CONDITIONAL([HAVE_CXX11],[test "x$HAVE_CXX11" = "xyes"]) + # Look for libcurl for libdebuginfod minimum version as per rhel7. AC_ARG_ENABLE([libdebuginfod],AS_HELP_STRING([--enable-libdebuginfod], [Build debuginfod client library (can be =dummy)])) AS_IF([test "x$enable_libdebuginfod" != "xno"], [ @@ -769,13 +839,15 @@ 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"]) +AC_CHECK_HEADERS([execinfo.h]) # Look for libmicrohttpd, libarchive, sqlite for debuginfo server # minimum versions as per rhel7. AC_ARG_ENABLE([debuginfod],AS_HELP_STRING([--enable-debuginfod], [Build debuginfod server])) AS_IF([test "x$enable_debuginfod" != "xno"], [ - AC_MSG_NOTICE([checking debuginfod C++11 support, --disable-debuginfod to skip]) - AX_CXX_COMPILE_STDCXX(11, noext, mandatory) + if test "x$HAVE_CXX11" = "xno"; then + AC_MSG_ERROR([the compiler does not support C++11, use --disable-debuginfod to disable.]) + fi 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.]) @@ -829,6 +901,7 @@ AC_MSG_NOTICE([ bzip2 support : ${with_bzlib} lzma/xz support : ${with_lzma} zstd support : ${with_zstd} + zstd compression support : ${with_zstd_compress} libstdc++ demangle support : ${enable_demangler} File textrel check : ${enable_textrelcheck} Symbol versioning : ${enable_symbol_versioning} @@ -848,12 +921,14 @@ AC_MSG_NOTICE([ EXTRA TEST FEATURES (used with make check) have bunzip2 installed (required) : ${HAVE_BUNZIP2} have zstd installed : ${HAVE_ZSTD} + C++11 : ${HAVE_CXX11} debug branch prediction : ${use_debugpred} gprof support : ${use_gprof} gcov support : ${use_gcov} run all tests under valgrind : ${use_valgrind} gcc undefined behaviour sanitizer : ${use_undefined} gcc address sanitizer : ${use_address} + clang memory sanitizer : ${use_msan} use rpath in tests : ${tests_use_rpath} test biarch : ${utrace_cv_cc_biarch} ]) diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog index 50668e611c7d2484a6b8977f93fc241f1f1c09ff..0e4810bba5014c0545fdaa180c577012efb5729c 100644 --- a/debuginfod/ChangeLog +++ b/debuginfod/ChangeLog @@ -1,3 +1,97 @@ +2023-04-21 Frank Ch. Eigler + + * debuginfod.cxx (groom): Fix -r / -X logic. + +2023-04-13 Frank Ch. Eigler + + * debuginfod.cxx (archive_classify, scan_archive_file): Catch and + propagate exceptions during archive scans. + +2023-03-30 Jan Alexander Steffens (heftig) + + * debuginfod-client.c (update_atime): New function. + (extract_section, debuginfod_query_server): Call it. + +2023-03-30 Jan Alexander Steffens (heftig) + + * debuginfod-client.c (debuginfod_query_server): Don't modify + atime unintentionally. + * debuginfod.cxx (extract_section, handle_buildid_r_match): Ditto. + +2023-03-30 Aaron Merey + + * debuginfod-client.c (debuginfod_query_server): Avoid sscanf on + mixed-case component of string. + +2023-03-29 Jan Alexander Steffens (heftig) + + * debuginfod-client.c (debuginfod_query_server): s/futimes/futimens/ + * debuginfod.cxx (extract_section, handle_buildid_r_match): Ditto. + +2023-03-29 lilydjwg + + * debuginfod-client.c (debuginfod_query_server): Handle dl_size in + progress to account for possible curl 8.0.1 changes to + CURLINFO_CONTENT_LENGTH_DOWNLOAD*. + +2023-03-17 Aaron Merey + + * debuginfod-client.c (debuginfod_query_server): Do not create an + empty file in the cache if the query was cancelled by the progressfn. + +2023-02-07 Aaron Merey + + * debuginfod-client.c (cache_find_section): Avoid returning -ENOENT + if debuginfo wasn't found. + +2023-02-06 Mark Wielaard + + * debuginfod.h.in: Guard debuginfod_client typedef with + _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF. + +2023-01-10 Mark Wielaard + + * debuginfod-client.c (debuginfod_query_server): Use + CURL_AT_LEAST_VERSION(7.85.0) for CURLOPT_PROTOCOLS_STR. + +2023-01-11 Frank Ch. Eigler + + PR29975 & PR29976 + * debuginfod.cxx (default_concurrency): New function to guess a + reasonable default for -c/-C on large but constrained machines. + +2022-12-21 Mark Wielaard + + * debuginfod-client.c: Define CURL_AT_LEAST_VERSION. + +2022-12-21 Andrew Paprocki + + * debuginfod-client.c: Make compilable against newer curl. PR29926 + +2022-11-15 Mark Wielaard + + * debuginfod-client.c (debuginfod_query_server): Initialize + response_data early. + +2022-11-07 Aaron Merey + + * debuginfod-client.c (debuginfod_find_section): Don't treat 0 as an + error code. + +2022-11-04 Aaron Merey + + * debuginfod-client.c (debuginfod_find_section): Ensure rc + is always updated with the most recent error code. + +2022-11-03 Frank Ch. Eigler + + * debuginfod.cxx (handle_buildid): Correctly manage lifetime + of debuginfod_client federation callout object. + +2022-11-02 Mark Wielaard + + * debuginfod-client.c (extract_section): Mark static. + 2022-11-01 Aaron Merey * debuginfod-client.c (path_escape): Add early return. diff --git a/debuginfod/Makefile.am b/debuginfod/Makefile.am index f27d6e2eae8ffc8ce996828e7a1214e4b72dd607..125be97bbfcce487e04484479868f042c5b7cc10 100644 --- a/debuginfod/Makefile.am +++ b/debuginfod/Makefile.am @@ -102,7 +102,8 @@ endif $(LIBDEBUGINFOD_SONAME): $(srcdir)/libdebuginfod.map $(libdebuginfod_so_LIBS) $(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \ -Wl,--soname,$(LIBDEBUGINFOD_SONAME) \ - -Wl,--version-script,$<,--no-undefined \ + -Wl,--version-script,$< \ + $(NO_UNDEFINED) \ -Wl,--whole-archive $(libdebuginfod_so_LIBS) -Wl,--no-whole-archive \ $(libdebuginfod_so_LDLIBS) @$(textrel_check) diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index 0c4a00cf9c6a0828e23237b29f9a77f9ba14639a..dcf0503163fd73e126a2197d278f363fd6839810 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -105,6 +105,13 @@ void debuginfod_end (debuginfod_client *c) { } #include #endif +/* Older curl.h don't define CURL_AT_LEAST_VERSION. */ +#ifndef CURL_AT_LEAST_VERSION + #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) + #define CURL_AT_LEAST_VERSION(x,y,z) \ + (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) +#endif + #include static pthread_once_t init_control = PTHREAD_ONCE_INIT; @@ -241,7 +248,7 @@ debuginfod_write_callback (char *ptr, size_t size, size_t nmemb, void *data) /* handle config file read and write */ static int -debuginfod_config_cache(char *config_path, +debuginfod_config_cache(debuginfod_client *c, char *config_path, long cache_config_default_s, struct stat *st) { @@ -270,17 +277,27 @@ debuginfod_config_cache(char *config_path, } long cache_config; + /* PR29696 - NB: When using fdopen, the file descriptor is NOT + dup'ed and will be closed when the stream is closed. Manually + closing fd after fclose is called will lead to a race condition + where, if reused, the file descriptor will compete for its + regular use before being incorrectly closed here. */ FILE *config_file = fdopen(fd, "r"); if (config_file) { if (fscanf(config_file, "%ld", &cache_config) != 1) - cache_config = cache_config_default_s; - fclose(config_file); + cache_config = cache_config_default_s; + if (0 != fclose (config_file) && c->verbose_fd >= 0) + dprintf (c->verbose_fd, "fclose failed with %s (err=%d)\n", + strerror (errno), errno); } else - cache_config = cache_config_default_s; - - close (fd); + { + cache_config = cache_config_default_s; + if (0 != close (fd) && c->verbose_fd >= 0) + dprintf (c->verbose_fd, "close failed with %s (err=%d)\n", + strerror (errno), errno); + } return cache_config; } @@ -296,7 +313,7 @@ debuginfod_clean_cache(debuginfod_client *c, struct stat st; /* Create new interval file. */ - rc = debuginfod_config_cache(interval_path, + rc = debuginfod_config_cache(c, interval_path, cache_clean_default_interval_s, &st); if (rc < 0) return rc; @@ -309,11 +326,11 @@ debuginfod_clean_cache(debuginfod_client *c, /* Update timestamp representing when the cache was last cleaned. Do it at the start to reduce the number of threads trying to do a - cleanup simultaniously. */ + cleanup simultaneously. */ utime (interval_path, NULL); /* Read max unused age value from config file. */ - rc = debuginfod_config_cache(max_unused_path, + rc = debuginfod_config_cache(c, max_unused_path, cache_default_max_unused_age_s, &st); if (rc < 0) return rc; @@ -551,7 +568,9 @@ header_callback (char * buffer, size_t size, size_t numitems, void * userdata) struct handle_data *data = (struct handle_data *) userdata; if (size != 1) return 0; - if (data->client && data->client->verbose_fd >= 0) + if (data->client + && data->client->verbose_fd >= 0 + && numitems > 2) dprintf (data->client->verbose_fd, "header %.*s", (int)numitems, buffer); // Some basic checks to ensure the headers received are of the expected format if (strncasecmp(buffer, "X-DEBUGINFOD", 11) @@ -611,6 +630,19 @@ path_escape (const char *src, char *dest) dest[q] = '\0'; } +/* Attempt to update the atime */ +static void +update_atime (int fd) +{ + struct timespec tvs[2]; + + tvs[0].tv_sec = tvs[1].tv_sec = 0; + tvs[0].tv_nsec = UTIME_NOW; + tvs[1].tv_nsec = UTIME_OMIT; + + (void) futimens (fd, tvs); /* best effort */ +} + /* Attempt to read an ELF/DWARF section with name SECTION from FD and write it to a separate file in the debuginfod cache. If successful the absolute path of the separate file containing SECTION will be stored in USR_PATH. @@ -621,7 +653,7 @@ path_escape (const char *src, char *dest) section name was not found. -EEXIST indicates that the section was found but had type SHT_NOBITS. */ -int +static int extract_section (int fd, const char *section, char *fd_path, char **usr_path) { elf_version (EV_CURRENT); @@ -754,6 +786,7 @@ extract_section (int fd, const char *section, char *fd_path, char **usr_path) *usr_path = sec_path; else free (sec_path); + update_atime(fd); rc = sec_fd; goto out2; } @@ -778,23 +811,24 @@ out: an ELF/DWARF section with name SCN_NAME. If found, extract the section to a separate file in TARGET_CACHE_DIR and return a file descriptor for the section file. The path for this file will be stored in USR_PATH. - Return a negative errno if unsuccessful. */ + Return a negative errno if unsuccessful. -ENOENT indicates that SCN_NAME + is confirmed to not exist. */ static int cache_find_section (const char *scn_name, const char *target_cache_dir, char **usr_path) { - int fd; + int debug_fd; int rc = -EEXIST; char parent_path[PATH_MAX]; /* Check the debuginfo first. */ snprintf (parent_path, PATH_MAX, "%s/debuginfo", target_cache_dir); - fd = open (parent_path, O_RDONLY); - if (fd >= 0) + debug_fd = open (parent_path, O_RDONLY); + if (debug_fd >= 0) { - rc = extract_section (fd, scn_name, parent_path, usr_path); - close (fd); + rc = extract_section (debug_fd, scn_name, parent_path, usr_path); + close (debug_fd); } /* If the debuginfo file couldn't be found or the section type was @@ -802,12 +836,17 @@ cache_find_section (const char *scn_name, const char *target_cache_dir, if (rc == -EEXIST) { snprintf (parent_path, PATH_MAX, "%s/executable", target_cache_dir); - fd = open (parent_path, O_RDONLY); + int exec_fd = open (parent_path, O_RDONLY); - if (fd >= 0) + if (exec_fd >= 0) { - rc = extract_section (fd, scn_name, parent_path, usr_path); - close (fd); + rc = extract_section (exec_fd, scn_name, parent_path, usr_path); + close (exec_fd); + + /* Don't return -ENOENT if the debuginfo wasn't opened. The + section may exist in the debuginfo but not the executable. */ + if (debug_fd < 0 && rc == -ENOENT) + rc = -EREMOTE; } } @@ -1085,6 +1124,7 @@ debuginfod_query_server (debuginfod_client *c, } } /* Success!!!! */ + update_atime(fd); rc = fd; goto out; } @@ -1097,7 +1137,7 @@ debuginfod_query_server (debuginfod_client *c, close(fd); /* no need to hold onto the negative-hit file descriptor */ - rc = debuginfod_config_cache(cache_miss_path, + rc = debuginfod_config_cache(c, cache_miss_path, cache_miss_default_s, &st); if (rc < 0) goto out; @@ -1250,6 +1290,8 @@ debuginfod_query_server (debuginfod_client *c, data[i].handle = NULL; data[i].fd = -1; data[i].errbuf[0] = '\0'; + data[i].response_data = NULL; + data[i].response_data_size = 0; } char *escaped_string = NULL; @@ -1327,8 +1369,13 @@ debuginfod_query_server (debuginfod_client *c, /* Only allow http:// + https:// + file:// so we aren't being redirected to some unsupported protocol. */ +#if CURL_AT_LEAST_VERSION(7, 85, 0) + curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS_STR, + "http,https,file"); +#else curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS, (CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FILE)); +#endif curl_easy_setopt_ck(data[i].handle, CURLOPT_URL, data[i].url); if (vfd >= 0) curl_easy_setopt_ck(data[i].handle, CURLOPT_ERRORBUFFER, @@ -1346,8 +1393,6 @@ debuginfod_query_server (debuginfod_client *c, curl_easy_setopt_ck (data[i].handle, CURLOPT_LOW_SPEED_LIMIT, 100 * 1024L); } - data[i].response_data = NULL; - data[i].response_data_size = 0; curl_easy_setopt_ck(data[i].handle, CURLOPT_FILETIME, (long) 1); curl_easy_setopt_ck(data[i].handle, CURLOPT_FOLLOWLOCATION, (long) 1); curl_easy_setopt_ck(data[i].handle, CURLOPT_FAILONERROR, (long) 1); @@ -1449,14 +1494,14 @@ debuginfod_query_server (debuginfod_client *c, goto out2; } - long dl_size = 0; + long dl_size = -1; if (target_handle && (c->progressfn || maxsize > 0)) { /* Get size of file being downloaded. NB: If going through deflate-compressing proxies, this number is likely to be unavailable, so -1 may show. */ CURLcode curl_res; -#ifdef CURLINFO_CONTENT_LENGTH_DOWNLOAD_T +#if CURL_AT_LEAST_VERSION(7, 55, 0) curl_off_t cl; curl_res = curl_easy_getinfo(target_handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, @@ -1468,7 +1513,7 @@ debuginfod_query_server (debuginfod_client *c, curl_res = curl_easy_getinfo(target_handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &cl); - if (curl_res == CURLE_OK) + if (curl_res == CURLE_OK && cl >= 0) dl_size = (cl >= (double)(LONG_MAX+1UL) ? LONG_MAX : (long)cl); #endif /* If Content-Length is -1, try to get the size from @@ -1477,9 +1522,9 @@ debuginfod_query_server (debuginfod_client *c, { long xdl; char *hdr = strcasestr(c->winning_headers, "x-debuginfod-size"); + size_t off = strlen("x-debuginfod-size:"); - if (hdr != NULL - && sscanf(hdr, "x-debuginfod-size: %ld", &xdl) == 1) + if (hdr != NULL && sscanf(hdr + off, "%ld", &xdl) == 1) dl_size = xdl; } } @@ -1490,26 +1535,40 @@ debuginfod_query_server (debuginfod_client *c, long pa = loops; /* default param for progress callback */ 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, - CURLINFO_SIZE_DOWNLOAD_T, - &dl); - if (curl_res == 0 && dl >= 0) - pa = (dl > LONG_MAX ? LONG_MAX : (long)dl); + /* PR30809: Check actual size of cached file. This same + fd is shared by all the multi-curl handles (but only + one will end up writing to it). Another way could be + to tabulate totals in debuginfod_write_callback(). */ + struct stat cached; + int statrc = fstat(fd, &cached); + if (statrc == 0) + pa = (long) cached.st_size; + else + { + /* Otherwise, query libcurl for its tabulated total. + However, that counts http body length, not + decoded/decompressed content length, so does not + measure quite the same thing as dl. */ + CURLcode curl_res; +#if CURL_AT_LEAST_VERSION(7, 55, 0) + curl_off_t dl; + curl_res = curl_easy_getinfo(target_handle, + CURLINFO_SIZE_DOWNLOAD_T, + &dl); + if (curl_res == 0 && dl >= 0) + pa = (dl > LONG_MAX ? LONG_MAX : (long)dl); #else - double dl; - curl_res = curl_easy_getinfo(target_handle, - CURLINFO_SIZE_DOWNLOAD, - &dl); - if (curl_res == 0) - pa = (dl >= (double)(LONG_MAX+1UL) ? LONG_MAX : (long)dl); + double dl; + curl_res = curl_easy_getinfo(target_handle, + CURLINFO_SIZE_DOWNLOAD, + &dl); + if (curl_res == 0) + pa = (dl >= (double)(LONG_MAX+1UL) ? LONG_MAX : (long)dl); #endif - + } } - if ((*c->progressfn) (c, pa, dl_size)) + if ((*c->progressfn) (c, pa, dl_size == -1 ? 0 : dl_size)) { c->progressfn_cancel = true; break; @@ -1649,9 +1708,9 @@ debuginfod_query_server (debuginfod_client *c, } } while (num_msg > 0); - /* Create an empty file named as $HOME/.cache if the query fails - with ENOENT.*/ - if (rc == -ENOENT) + /* Create an empty file in the cache if the query fails with ENOENT and + it wasn't cancelled early. */ + if (rc == -ENOENT && !c->progressfn_cancel) { int efd = open (target_cache_path, O_CREAT|O_EXCL, DEFFILEMODE); if (efd >= 0) @@ -1700,13 +1759,15 @@ debuginfod_query_server (debuginfod_client *c, #else CURLcode curl_res = curl_easy_getinfo(verified_handle, CURLINFO_FILETIME, (void*) &mtime); #endif - if (curl_res != CURLE_OK) - mtime = time(NULL); /* fall back to current time */ - - struct timeval tvs[2]; - tvs[0].tv_sec = tvs[1].tv_sec = mtime; - tvs[0].tv_usec = tvs[1].tv_usec = 0; - (void) futimes (fd, tvs); /* best effort */ + if (curl_res == CURLE_OK) + { + struct timespec tvs[2]; + tvs[0].tv_sec = 0; + tvs[0].tv_nsec = UTIME_OMIT; + tvs[1].tv_sec = mtime; + tvs[1].tv_nsec = 0; + (void) futimens (fd, tvs); /* best effort */ + } /* PR27571: make cache files casually unwriteable; dirs are already 0700 */ (void) fchmod(fd, 0400); @@ -1936,7 +1997,7 @@ debuginfod_find_section (debuginfod_client *client, } return -ENOENT; } - if (fd > 0) + if (fd >= 0) { rc = extract_section (fd, section, tmp_path, path); close (fd); @@ -1944,14 +2005,18 @@ debuginfod_find_section (debuginfod_client *client, if (rc == -EEXIST) { - /* The section should be found in the executable. */ + /* Either the debuginfo couldn't be found or the section should + be in the executable. */ fd = debuginfod_find_executable (client, build_id, build_id_len, &tmp_path); - if (fd > 0) + if (fd >= 0) { rc = extract_section (fd, section, tmp_path, path); close (fd); } + else + /* Update rc so that we return the most recent error code. */ + rc = fd; } free (tmp_path); diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx index f46da6eff4a7a224c63b6075e95c082c9f46beae..c11aeda1a3afa7d9bfef87e53cd678bad7647c9e 100644 --- a/debuginfod/debuginfod.cxx +++ b/debuginfod/debuginfod.cxx @@ -32,6 +32,24 @@ #include "config.h" #endif +// #define _GNU_SOURCE +#ifdef HAVE_SCHED_H +extern "C" { +#include +} +#endif +#ifdef HAVE_SYS_RESOURCE_H +extern "C" { +#include +} +#endif + +#ifdef HAVE_EXECINFO_H +extern "C" { +#include +} +#endif + extern "C" { #include "printversion.h" #include "system.h" @@ -73,6 +91,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -82,6 +101,7 @@ extern "C" { #include #include #include +#include #include // #include // on rhel7 gcc 4.8, not competent #include @@ -126,7 +146,7 @@ string_endswith(const string& haystack, const string& needle) // Roll this identifier for every sqlite schema incompatibility. -#define BUILDIDS "buildids9" +#define BUILDIDS "buildids10" #if SQLITE_VERSION_NUMBER >= 3008000 #define WITHOUT_ROWID "without rowid" @@ -145,10 +165,23 @@ static const char DEBUGINFOD_SQLITE_DDL[] = // NB: all these are overridable with -D option // Normalization table for interning file names - "create table if not exists " BUILDIDS "_files (\n" + "create table if not exists " BUILDIDS "_fileparts (\n" " id integer primary key not null,\n" " name text unique not null\n" " );\n" + "create table if not exists " BUILDIDS "_files (\n" + " id integer primary key not null,\n" + " dirname integer not null,\n" + " basename integer not null,\n" + " unique (dirname, basename),\n" + " foreign key (dirname) references " BUILDIDS "_fileparts(id) on delete cascade,\n" + " foreign key (basename) references " BUILDIDS "_fileparts(id) on delete cascade\n" + " );\n" + "create view if not exists " BUILDIDS "_files_v as\n" // a + " select f.id, n1.name || '/' || n2.name as name\n" + " from " BUILDIDS "_files f, " BUILDIDS "_fileparts n1, " BUILDIDS "_fileparts n2\n" + " where f.dirname = n1.id and f.basename = n2.id;\n" + // Normalization table for interning buildids "create table if not exists " BUILDIDS "_buildids (\n" " id integer primary key not null,\n" @@ -218,33 +251,33 @@ static const char DEBUGINFOD_SQLITE_DDL[] = "create view if not exists " BUILDIDS "_query_d as \n" "select\n" " b.hex as buildid, n.mtime, 'F' as sourcetype, f0.name as source0, n.mtime as mtime, null as source1\n" - " from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_f_de n\n" + " from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_f_de n\n" " where b.id = n.buildid and f0.id = n.file and n.debuginfo_p = 1\n" "union all select\n" " b.hex as buildid, n.mtime, 'R' as sourcetype, f0.name as source0, n.mtime as mtime, f1.name as source1\n" - " from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files f1, " BUILDIDS "_r_de n\n" + " from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v f1, " BUILDIDS "_r_de n\n" " where b.id = n.buildid and f0.id = n.file and f1.id = n.content and n.debuginfo_p = 1\n" ";" // ... and for E queries "create view if not exists " BUILDIDS "_query_e as \n" "select\n" " b.hex as buildid, n.mtime, 'F' as sourcetype, f0.name as source0, n.mtime as mtime, null as source1\n" - " from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_f_de n\n" + " from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_f_de n\n" " where b.id = n.buildid and f0.id = n.file and n.executable_p = 1\n" "union all select\n" " b.hex as buildid, n.mtime, 'R' as sourcetype, f0.name as source0, n.mtime as mtime, f1.name as source1\n" - " from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files f1, " BUILDIDS "_r_de n\n" + " from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v f1, " BUILDIDS "_r_de n\n" " where b.id = n.buildid and f0.id = n.file and f1.id = n.content and n.executable_p = 1\n" ";" // ... and for S queries "create view if not exists " BUILDIDS "_query_s as \n" "select\n" " b.hex as buildid, fs.name as artifactsrc, 'F' as sourcetype, f0.name as source0, n.mtime as mtime, null as source1, null as source0ref\n" - " from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files fs, " BUILDIDS "_f_s n\n" + " from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v fs, " BUILDIDS "_f_s n\n" " where b.id = n.buildid and f0.id = n.file and fs.id = n.artifactsrc\n" "union all select\n" " b.hex as buildid, f1.name as artifactsrc, 'R' as sourcetype, f0.name as source0, sd.mtime as mtime, f1.name as source1, fsref.name as source0ref\n" - " from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files f1, " BUILDIDS "_files fsref, " + " from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v f1, " BUILDIDS "_files_v fsref, " " " BUILDIDS "_r_sdef sd, " BUILDIDS "_r_sref sr, " BUILDIDS "_r_de sde\n" " where b.id = sr.buildid and f0.id = sd.file and fsref.id = sde.file and f1.id = sd.content\n" " and sr.artifactsrc = sd.content and sde.buildid = sr.buildid\n" @@ -259,6 +292,7 @@ static const char DEBUGINFOD_SQLITE_DDL[] = "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 'fileparts',count(*) from " BUILDIDS "_fileparts\n" "union all select 'files scanned (#)',count(*) from " BUILDIDS "_file_mtime_scanned\n" "union all select 'files scanned (mb)',coalesce(sum(size)/1024/1024,0) from " BUILDIDS "_file_mtime_scanned\n" #if SQLITE_VERSION_NUMBER >= 3016000 @@ -269,10 +303,26 @@ static const char DEBUGINFOD_SQLITE_DDL[] = // schema change history & garbage collection // // XXX: we could have migration queries here to bring prior-schema -// data over instead of just dropping it. +// data over instead of just dropping it. But that could incur +// doubled storage costs. // -// buildids9: widen the mtime_scanned table +// buildids10: split the _files table into _parts "" // <<< we are here +// buildids9: widen the mtime_scanned table + "DROP VIEW IF EXISTS buildids9_stats;\n" + "DROP INDEX IF EXISTS buildids9_r_de_idx;\n" + "DROP INDEX IF EXISTS buildids9_f_de_idx;\n" + "DROP VIEW IF EXISTS buildids9_query_s;\n" + "DROP VIEW IF EXISTS buildids9_query_e;\n" + "DROP VIEW IF EXISTS buildids9_query_d;\n" + "DROP TABLE IF EXISTS buildids9_r_sdef;\n" + "DROP TABLE IF EXISTS buildids9_r_sref;\n" + "DROP TABLE IF EXISTS buildids9_r_de;\n" + "DROP TABLE IF EXISTS buildids9_f_s;\n" + "DROP TABLE IF EXISTS buildids9_f_de;\n" + "DROP TABLE IF EXISTS buildids9_file_mtime_scanned;\n" + "DROP TABLE IF EXISTS buildids9_buildids;\n" + "DROP TABLE IF EXISTS buildids9_files;\n" // buildids8: slim the sref table "drop table if exists buildids8_f_de;\n" "drop table if exists buildids8_f_s;\n" @@ -336,7 +386,7 @@ static const char DEBUGINFOD_SQLITE_CLEANUP_DDL[] = /* Name and version of program. */ -/* ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; */ // not this simple for C++ +ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; /* Bug report address. */ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; @@ -386,6 +436,8 @@ static const struct argp_option options[] = { "passive", ARGP_KEY_PASSIVE, NULL, 0, "Do not scan or groom, read-only database.", 0 }, #define ARGP_KEY_DISABLE_SOURCE_SCAN 0x1009 { "disable-source-scan", ARGP_KEY_DISABLE_SOURCE_SCAN, NULL, 0, "Do not scan dwarf source info.", 0 }, +#define ARGP_SCAN_CHECKPOINT 0x100A + { "scan-checkpoint", ARGP_SCAN_CHECKPOINT, "NUM", 0, "Number of files scanned before a WAL checkpoint.", 0 }, { NULL, 0, NULL, 0, NULL, 0 }, }; @@ -398,6 +450,8 @@ static const char args_doc[] = "[PATH ...]"; /* Prototype for option handler. */ static error_t parse_opt (int key, char *arg, struct argp_state *state); +static unsigned default_concurrency(); + /* Data structure to communicate with argp functions. */ static struct argp argp = { @@ -418,7 +472,7 @@ static unsigned http_port = 8002; static unsigned rescan_s = 300; static unsigned groom_s = 86400; static bool maxigroom = false; -static unsigned concurrency = std::thread::hardware_concurrency() ?: 1; +static unsigned concurrency = default_concurrency(); static int connection_pool = 0; static set source_paths; static bool scan_files = false; @@ -438,6 +492,7 @@ static unsigned forwarded_ttl_limit = 8; static bool scan_source_info = true; static string tmpdir; static bool passive_p = false; +static long scan_checkpoint = 256; static void set_metric(const string& key, double value); // static void inc_metric(const string& key); @@ -639,6 +694,11 @@ parse_opt (int key, char *arg, case ARGP_KEY_DISABLE_SOURCE_SCAN: scan_source_info = false; break; + case ARGP_SCAN_CHECKPOINT: + scan_checkpoint = atol (arg); + if (scan_checkpoint < 0) + argp_failure(state, 1, EINVAL, "scan checkpoint"); + break; // case 'h': argp_state_help (state, stderr, ARGP_HELP_LONG|ARGP_HELP_EXIT_OK); default: return ARGP_ERR_UNKNOWN; } @@ -722,7 +782,7 @@ struct elfutils_exception: public reportable_exception template class workq { - set q; // eliminate duplicates + unordered_set q; // eliminate duplicates mutex mtx; condition_variable cv; bool dead; @@ -811,6 +871,24 @@ inline bool operator< (const scan_payload& a, const scan_payload& b) { return a.first < b.first; // don't bother compare the stat fields } + +namespace std { // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480 + template<> struct hash<::scan_payload> + { + std::size_t operator() (const ::scan_payload& p) const noexcept + { + return hash()(p.first); + } + }; + template<> struct equal_to<::scan_payload> + { + std::size_t operator() (const ::scan_payload& a, const ::scan_payload& b) const noexcept + { + return a.first == b.first; + } + }; +} + static workq scanq; // just a single one // producer & idler: thread_main_fts_source_paths() // consumer: thread_main_scanner() @@ -866,6 +944,72 @@ public: }; +//////////////////////////////////////////////////////////////////////// + +// periodic_barrier is a concurrency control object that lets N threads +// periodically (based on counter value) agree to wait at a barrier, +// let one of them carry out some work, then be set free + +class periodic_barrier +{ +private: + unsigned period; // number of count() reports to trigger barrier activation + unsigned threads; // number of threads participating + mutex mtx; // protects all the following fields + unsigned counter; // count of count() reports in the current generation + unsigned generation; // barrier activation generation + unsigned waiting; // number of threads waiting for barrier + bool dead; // bring out your + condition_variable cv; +public: + periodic_barrier(unsigned t, unsigned p): + period(p), threads(t), counter(0), generation(0), waiting(0), dead(false) { } + virtual ~periodic_barrier() {} + + virtual void periodic_barrier_work() noexcept = 0; + void nuke() { + unique_lock lock(mtx); + dead = true; + cv.notify_all(); + } + + void count() + { + unique_lock lock(mtx); + unsigned prev_generation = this->generation; + if (counter < period-1) // normal case: counter just freely running + { + counter ++; + return; + } + else if (counter == period-1) // we're the doer + { + counter = period; // entering barrier holding phase + cv.notify_all(); + while (waiting < threads-1 && !dead) + cv.wait(lock); + // all other threads are now stuck in the barrier + this->periodic_barrier_work(); // NB: we're holding the mutex the whole time + // reset for next barrier, releasing other waiters + counter = 0; + generation ++; + cv.notify_all(); + return; + } + else if (counter == period) // we're a waiter, in holding phase + { + waiting ++; + cv.notify_all(); + while (counter == period && generation == prev_generation && !dead) + cv.wait(lock); + waiting --; + return; + } + } +}; + + + //////////////////////////////////////////////////////////////////////// @@ -1010,6 +1154,24 @@ public: }; +//////////////////////////////////////////////////////////////////////// + + +struct sqlite_checkpoint_pb: public periodic_barrier +{ + // NB: don't use sqlite_ps since it can throw exceptions during ctor etc. + sqlite_checkpoint_pb(unsigned t, unsigned p): + periodic_barrier(t, p) { } + + void periodic_barrier_work() noexcept + { + (void) sqlite3_exec (db, "pragma wal_checkpoint(truncate);", NULL, NULL, NULL); + } +}; + +static periodic_barrier* scan_barrier = 0; // initialized in main() + + //////////////////////////////////////////////////////////////////////// // RAII style templated autocloser @@ -1621,13 +1783,14 @@ extract_section (int elf_fd, int64_t parent_mtime, throw libc_exception (errno, "cannot write to temporary file"); /* Set mtime to be the same as the parent file's mtime. */ - struct timeval tvs[2]; + struct timespec tvs[2]; if (fstat (elf_fd, &fs) != 0) throw libc_exception (errno, "cannot fstat file"); - tvs[0].tv_sec = tvs[1].tv_sec = fs.st_mtime; - tvs[0].tv_usec = tvs[1].tv_usec = 0; - (void) futimes (fd, tvs); + tvs[0].tv_sec = 0; + tvs[0].tv_nsec = UTIME_OMIT; + tvs[1] = fs.st_mtim; + (void) futimens (fd, tvs); /* Add to fdcache. */ fdcache.intern (b_source, section, tmppath, data->d_size, true); @@ -1713,11 +1876,10 @@ handle_buildid_f_match (bool internal_req_t, } else { - std::string file = b_source0.substr(b_source0.find_last_of("/")+1, b_source0.length()); add_mhd_response_header (r, "Content-Type", "application/octet-stream"); add_mhd_response_header (r, "X-DEBUGINFOD-SIZE", to_string(s.st_size).c_str()); - add_mhd_response_header (r, "X-DEBUGINFOD-FILE", file.c_str()); + add_mhd_response_header (r, "X-DEBUGINFOD-FILE", b_source0.c_str()); add_mhd_last_modified (r, s.st_mtime); if (verbose > 1) obatched(clog) << "serving file " << b_source0 << " section=" << section << endl; @@ -1937,10 +2099,12 @@ handle_buildid_r_match (bool internal_req_p, // 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 */ + struct timespec tvs[2]; + tvs[0].tv_sec = 0; + tvs[0].tv_nsec = UTIME_OMIT; + tvs[1].tv_sec = archive_entry_mtime(e); + tvs[1].tv_nsec = archive_entry_mtime_nsec(e); + (void) futimens (fd, tvs); /* best effort */ if (r != 0) // stage 3 { @@ -1999,14 +2163,12 @@ handle_buildid_r_match (bool internal_req_p, } else { - std::string file = b_source1.substr(b_source1.find_last_of("/")+1, b_source1.length()); add_mhd_response_header (r, "Content-Type", "application/octet-stream"); add_mhd_response_header (r, "X-DEBUGINFOD-SIZE", to_string(archive_entry_size(e)).c_str()); - add_mhd_response_header (r, "X-DEBUGINFOD-ARCHIVE", - b_source0.c_str()); - add_mhd_response_header (r, "X-DEBUGINFOD-FILE", file.c_str()); + add_mhd_response_header (r, "X-DEBUGINFOD-ARCHIVE", b_source0.c_str()); + add_mhd_response_header (r, "X-DEBUGINFOD-FILE", b_source1.c_str()); add_mhd_last_modified (r, archive_entry_mtime(e)); if (verbose > 1) obatched(clog) << "serving archive " << b_source0 @@ -2249,85 +2411,82 @@ handle_buildid (MHD_Connection* conn, int fd = -1; debuginfod_client *client = debuginfod_pool_begin (); - if (client != NULL) - { - debuginfod_set_progressfn (client, & debuginfod_find_progress); + if (client == NULL) + throw libc_exception(errno, "debuginfod client pool alloc"); + defer_dtor client_closer (client, debuginfod_pool_end); + + 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 - - unsigned int xff_count = 0; - for (auto&& i : xff){ - if (i == ',') xff_count++; - } + 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 + + unsigned int xff_count = 0; + for (auto&& i : xff){ + if (i == ',') xff_count++; + } - // if X-Forwarded-For: exceeds N hops, - // do not delegate a local lookup miss to upstream debuginfods. - if (xff_count >= forwarded_ttl_limit) - throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found, --forwared-ttl-limit reached \ + // if X-Forwarded-For: exceeds N hops, + // do not delegate a local lookup miss to upstream debuginfods. + if (xff_count >= forwarded_ttl_limit) + throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found, --forwared-ttl-limit reached \ and will not query the upstream servers"); - // 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) { - struct sockaddr_in6* addr6 = (struct sockaddr_in6*) so; - if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { - struct sockaddr_in addr4; - memset (&addr4, 0, sizeof(addr4)); - addr4.sin_family = AF_INET; - addr4.sin_port = addr6->sin6_port; - memcpy (&addr4.sin_addr.s_addr, addr6->sin6_addr.s6_addr+12, sizeof(addr4.sin_addr.s_addr)); - (void) getnameinfo ((struct sockaddr*) &addr4, sizeof (addr4), - hostname, sizeof (hostname), NULL, 0, - NI_NUMERICHOST); - } else { - (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()); + // 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) { + struct sockaddr_in6* addr6 = (struct sockaddr_in6*) so; + if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { + struct sockaddr_in addr4; + memset (&addr4, 0, sizeof(addr4)); + addr4.sin_family = AF_INET; + addr4.sin_port = addr6->sin6_port; + memcpy (&addr4.sin_addr.s_addr, addr6->sin6_addr.s6_addr+12, sizeof(addr4.sin_addr.s_addr)); + (void) getnameinfo ((struct sockaddr*) &addr4, sizeof (addr4), + hostname, sizeof (hostname), NULL, 0, + NI_NUMERICHOST); + } else { + (void) getnameinfo (so, sizeof (struct sockaddr_in6), hostname, sizeof (hostname), NULL, 0, + NI_NUMERICHOST); } - - if (artifacttype == "debuginfo") - fd = debuginfod_find_debuginfo (client, - (const unsigned char*) buildid.c_str(), - 0, NULL); - else if (artifacttype == "executable") - fd = debuginfod_find_executable (client, - (const unsigned char*) buildid.c_str(), - 0, NULL); - else if (artifacttype == "source") - fd = debuginfod_find_source (client, - (const unsigned char*) buildid.c_str(), - 0, suffix.c_str(), NULL); - else if (artifacttype == "section") - fd = debuginfod_find_section (client, - (const unsigned char*) buildid.c_str(), - 0, section.c_str(), NULL); - + } + + string xff_complete = string("X-Forwarded-For: ")+xff+string(hostname); + debuginfod_add_http_header (client, xff_complete.c_str()); } - else - fd = -errno; /* Set by debuginfod_begin. */ - debuginfod_pool_end (client); - + + if (artifacttype == "debuginfo") + fd = debuginfod_find_debuginfo (client, + (const unsigned char*) buildid.c_str(), + 0, NULL); + else if (artifacttype == "executable") + fd = debuginfod_find_executable (client, + (const unsigned char*) buildid.c_str(), + 0, NULL); + else if (artifacttype == "source") + fd = debuginfod_find_source (client, + (const unsigned char*) buildid.c_str(), + 0, suffix.c_str(), NULL); + else if (artifacttype == "section") + fd = debuginfod_find_section (client, + (const unsigned char*) buildid.c_str(), + 0, section.c_str(), NULL); + if (fd >= 0) { if (conn != 0) @@ -3026,10 +3185,65 @@ elf_classify (int fd, bool &executable_p, bool &debuginfo_p, string &buildid, se } +// Intern the given file name in two parts (dirname & basename) and +// return the resulting file's id. +static int64_t +register_file_name(sqlite_ps& ps_upsert_fileparts, + sqlite_ps& ps_upsert_file, + sqlite_ps& ps_lookup_file, + const string& name) +{ + std::size_t slash = name.rfind('/'); + string dirname, basename; + if (slash == std::string::npos) + { + dirname = ""; + basename = name; + } + else + { + dirname = name.substr(0, slash); + basename = name.substr(slash+1); + } + + // intern the two substrings + ps_upsert_fileparts + .reset() + .bind(1, dirname) + .step_ok_done(); + ps_upsert_fileparts + .reset() + .bind(1, basename) + .step_ok_done(); + + // intern the tuple + ps_upsert_file + .reset() + .bind(1, dirname) + .bind(2, basename) + .step_ok_done(); + + // look up the tuple's id + ps_lookup_file + .reset() + .bind(1, dirname) + .bind(2, basename); + int rc = ps_lookup_file.step(); + if (rc != SQLITE_ROW) throw sqlite_exception(rc, "step"); + + int64_t id = sqlite3_column_int64 (ps_lookup_file, 0); + ps_lookup_file.reset(); + return id; +} + + + static void scan_source_file (const string& rps, const stat_t& st, sqlite_ps& ps_upsert_buildids, - sqlite_ps& ps_upsert_files, + sqlite_ps& ps_upsert_fileparts, + sqlite_ps& ps_upsert_file, + sqlite_ps& ps_lookup_file, sqlite_ps& ps_upsert_de, sqlite_ps& ps_upsert_s, sqlite_ps& ps_query, @@ -3039,10 +3253,12 @@ scan_source_file (const string& rps, const stat_t& st, unsigned& fts_debuginfo, unsigned& fts_sourcefiles) { + int64_t fileid = register_file_name(ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, rps); + /* See if we know of it already. */ int rc = ps_query .reset() - .bind(1, rps) + .bind(1, fileid) .bind(2, st.st_mtime) .step(); ps_query.reset(); @@ -3082,12 +3298,6 @@ scan_source_file (const string& rps, const stat_t& st, 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 @@ -3114,7 +3324,7 @@ scan_source_file (const string& rps, const stat_t& st, .bind(1, buildid) .bind(2, debuginfo_p ? 1 : 0) .bind(3, executable_p ? 1 : 0) - .bind(4, rps) + .bind(4, fileid) .bind(5, st.st_mtime) .step_ok_done(); } @@ -3146,11 +3356,6 @@ scan_source_file (const string& rps, const stat_t& st, << " mtime=" << sfs.st_mtime << " as source " << dwarfsrc << endl; - ps_upsert_files - .reset() - .bind(1, srps) - .step_ok_done(); - // PR25548: store canonicalized dwarfsrc path string dwarfsrc_canon = canon_pathname (dwarfsrc); if (dwarfsrc_canon != dwarfsrc) @@ -3159,16 +3364,14 @@ scan_source_file (const string& rps, const stat_t& st, obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl; } - ps_upsert_files - .reset() - .bind(1, dwarfsrc_canon) - .step_ok_done(); + int64_t fileid1 = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, dwarfsrc_canon); + int64_t fileid2 = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, srps); ps_upsert_s .reset() .bind(1, buildid) - .bind(2, dwarfsrc_canon) - .bind(3, srps) + .bind(2, fileid1) + .bind(3, fileid2) .bind(4, sfs.st_mtime) .step_ok_done(); @@ -3178,7 +3381,7 @@ scan_source_file (const string& rps, const stat_t& st, ps_scan_done .reset() - .bind(1, rps) + .bind(1, fileid) .bind(2, st.st_mtime) .bind(3, st.st_size) .step_ok_done(); @@ -3197,8 +3400,9 @@ scan_source_file (const string& rps, const stat_t& st, // Analyze given archive file of given age; record buildids / exec/debuginfo-ness of its // constituent files with given upsert statements. static void -archive_classify (const string& rps, string& archive_extension, - sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_upsert_files, +archive_classify (const string& rps, string& archive_extension, int64_t archiveid, + sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_upsert_fileparts, sqlite_ps& ps_upsert_file, + sqlite_ps& ps_lookup_file, 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, @@ -3252,8 +3456,9 @@ archive_classify (const string& rps, string& archive_extension, } if (verbose > 3) - obatched(clog) << "libarchive scanning " << rps << endl; + obatched(clog) << "libarchive scanning " << rps << " id " << archiveid << endl; + bool any_exceptions = false; while(1) // parse archive entries { if (interrupted) @@ -3305,10 +3510,7 @@ archive_classify (const string& rps, string& archive_extension, .step_ok_done(); } - ps_upsert_files // register this rpm constituent file name in interning table - .reset() - .bind(1, fn) - .step_ok_done(); + int64_t fileid = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, fn); if (sourcefiles.size() > 0) // sref records needed { @@ -3337,15 +3539,13 @@ archive_classify (const string& rps, string& archive_extension, obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl; } - ps_upsert_files - .reset() - .bind(1, dwarfsrc_canon) - .step_ok_done(); - + int64_t srcfileid = register_file_name(ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, + dwarfsrc_canon); + ps_upsert_sref .reset() .bind(1, buildid) - .bind(2, dwarfsrc_canon) + .bind(2, srcfileid) .step_ok_done(); fts_sref ++; @@ -3364,9 +3564,9 @@ archive_classify (const string& rps, string& archive_extension, .bind(1, buildid) .bind(2, debuginfo_p ? 1 : 0) .bind(3, executable_p ? 1 : 0) - .bind(4, rps) + .bind(4, archiveid) .bind(5, mtime) - .bind(6, fn) + .bind(6, fileid) .step_ok_done(); } else // potential source - sdef record @@ -3374,9 +3574,9 @@ archive_classify (const string& rps, string& archive_extension, fts_sdef ++; ps_upsert_sdef .reset() - .bind(1, rps) + .bind(1, archiveid) .bind(2, mtime) - .bind(3, fn) + .bind(3, fileid) .step_ok_done(); } @@ -3391,8 +3591,17 @@ archive_classify (const string& rps, string& archive_extension, catch (const reportable_exception& e) { e.report(clog); + any_exceptions = true; + // NB: but we allow the libarchive iteration to continue, in + // case we can still gather some useful information. That + // would allow some webapi queries to work, until later when + // this archive is rescanned. (Its vitals won't go into the + // _file_mtime_scanned table until after a successful scan.) } } + + if (any_exceptions) + throw reportable_exception("exceptions encountered during archive scan"); } @@ -3401,7 +3610,9 @@ archive_classify (const string& rps, string& archive_extension, static void scan_archive_file (const string& rps, const stat_t& st, sqlite_ps& ps_upsert_buildids, - sqlite_ps& ps_upsert_files, + sqlite_ps& ps_upsert_fileparts, + sqlite_ps& ps_upsert_file, + sqlite_ps& ps_lookup_file, sqlite_ps& ps_upsert_de, sqlite_ps& ps_upsert_sref, sqlite_ps& ps_upsert_sdef, @@ -3413,10 +3624,13 @@ scan_archive_file (const string& rps, const stat_t& st, unsigned& fts_sref, unsigned& fts_sdef) { + // intern the archive file name + int64_t archiveid = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, rps); + /* See if we know of it already. */ int rc = ps_query .reset() - .bind(1, rps) + .bind(1, archiveid) .bind(2, st.st_mtime) .step(); ps_query.reset(); @@ -3430,20 +3644,15 @@ scan_archive_file (const string& rps, const stat_t& st, 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; + bool any_exceptions = false; try { string archive_extension; - archive_classify (rps, archive_extension, - ps_upsert_buildids, ps_upsert_files, + archive_classify (rps, archive_extension, archiveid, + ps_upsert_buildids, ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, 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, @@ -3461,6 +3670,7 @@ scan_archive_file (const string& rps, const stat_t& st, catch (const reportable_exception& e) { e.report(clog); + any_exceptions = true; } if (verbose > 2) @@ -3470,6 +3680,7 @@ scan_archive_file (const string& rps, const stat_t& st, << " debuginfos=" << my_fts_debuginfo << " srefs=" << my_fts_sref << " sdefs=" << my_fts_sdef + << " exceptions=" << any_exceptions << endl; fts_executable += my_fts_executable; @@ -3477,10 +3688,13 @@ scan_archive_file (const string& rps, const stat_t& st, fts_sref += my_fts_sref; fts_sdef += my_fts_sdef; + if (any_exceptions) + throw reportable_exception("exceptions encountered during archive scan"); + if (my_fts_sref_complete_p) // leave incomplete? ps_scan_done .reset() - .bind(1, rps) + .bind(1, archiveid) .bind(2, st.st_mtime) .bind(3, st.st_size) .step_ok_done(); @@ -3495,57 +3709,63 @@ scan_archive_file (const string& rps, const stat_t& st, // 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) +static void +scan () { - (void) arg; - // 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_fileparts (db, "file-fileparts-intern", "insert or ignore into " BUILDIDS "_fileparts VALUES (NULL, ?);"); + sqlite_ps ps_f_upsert_file (db, "file-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, \n" + "(select id from " BUILDIDS "_fileparts where name = ?),\n" + "(select id from " BUILDIDS "_fileparts where name = ?));"); + sqlite_ps ps_f_lookup_file (db, "file-file-lookup", + "select f.id\n" + " from " BUILDIDS "_files f, " BUILDIDS "_fileparts p1, " BUILDIDS "_fileparts p2 \n" + " where f.dirname = p1.id and f.basename = p2.id and p1.name = ? and p2.name = ?;\n"); 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 = ?;"); + "and file = ? 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 = ?), ?, ?);"); + "values ('F', ?,?,?);"); // 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_fileparts (db, "rpm-fileparts-intern", "insert or ignore into " BUILDIDS "_fileparts VALUES (NULL, ?);"); + sqlite_ps ps_r_upsert_file (db, "rpm-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, \n" + "(select id from " BUILDIDS "_fileparts where name = ?),\n" + "(select id from " BUILDIDS "_fileparts where name = ?));"); + sqlite_ps ps_r_lookup_file (db, "rpm-file-lookup", + "select f.id\n" + " from " BUILDIDS "_files f, " BUILDIDS "_fileparts p1, " BUILDIDS "_fileparts p2 \n" + " where f.dirname = p1.id and f.basename = p2.id and p1.name = ? and p2.name = ?;\n"); 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 = ?));"); + "(select id from " BUILDIDS "_buildids where hex = ?), ?, ?, ?, ?, ?);"); 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_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_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 = ?;"); + "sourcetype = 'R' and file = ? and mtime = ?;"); 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 = ?), ?, ?);"); - + "values ('R', ?, ?, ?);"); + unsigned fts_cached = 0, fts_executable = 0, fts_debuginfo = 0, fts_sourcefiles = 0; unsigned fts_sref = 0, fts_sdef = 0; @@ -3557,6 +3777,9 @@ thread_main_scanner (void* arg) scan_payload p; add_metric("thread_busy", "role", "scan", -1); + // NB: threads may be blocked within either of these two waiting + // states, if the work queue happens to run dry. That's OK. + if (scan_barrier) scan_barrier->count(); bool gotone = scanq.wait_front(p); add_metric("thread_busy", "role", "scan", 1); @@ -3572,7 +3795,9 @@ thread_main_scanner (void* arg) if (scan_archive) scan_archive_file (p.first, p.second, ps_r_upsert_buildids, - ps_r_upsert_files, + ps_r_upsert_fileparts, + ps_r_upsert_file, + ps_r_lookup_file, ps_r_upsert_de, ps_r_upsert_sref, ps_r_upsert_sdef, @@ -3587,7 +3812,9 @@ thread_main_scanner (void* arg) 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_fileparts, + ps_f_upsert_file, + ps_f_lookup_file, ps_f_upsert_de, ps_f_upsert_s, ps_f_query, @@ -3611,8 +3838,25 @@ thread_main_scanner (void* arg) inc_metric("thread_work_total","role","scan"); } - add_metric("thread_busy", "role", "scan", -1); +} + + +// Use this function as the thread entry point, so it can catch our +// fleet of exceptions (incl. the sqlite_ps ctors) and report. +static void* +thread_main_scanner (void* arg) +{ + (void) arg; + while (! interrupted) + try + { + scan(); + } + catch (const reportable_exception& e) + { + e.report(cerr); + } return 0; } @@ -3825,7 +4069,7 @@ void groom() // scan for files that have disappeared sqlite_ps files (db, "check old files", "select distinct s.mtime, s.file, f.name from " - BUILDIDS "_file_mtime_scanned s, " BUILDIDS "_files f " + BUILDIDS "_file_mtime_scanned s, " BUILDIDS "_files_v f " "where f.id = s.file"); // NB: Because _ftime_mtime_scanned can contain both F and // R records for the same file, this query would return duplicates if the @@ -3863,7 +4107,7 @@ void groom() { bool reg_include = !regexec (&file_include_regex, filename, 0, 0, 0); bool reg_exclude = !regexec (&file_exclude_regex, filename, 0, 0, 0); - regex_file_drop = reg_exclude && !reg_include; + regex_file_drop = !reg_include || reg_exclude; // match logic of scan_source_paths } rc = stat(filename, &s); @@ -4085,6 +4329,61 @@ static void sqlite3_sharedprefix_fn (sqlite3_context* c, int argc, sqlite3_value } +static unsigned +default_concurrency() // guaranteed >= 1 +{ + // Prior to PR29975 & PR29976, we'd just use this: + unsigned sth = std::thread::hardware_concurrency(); + // ... but on many-CPU boxes, admins or distros may throttle + // resources in such a way that debuginfod would mysteriously fail. + // So we reduce the defaults: + + unsigned aff = 0; +#ifdef HAVE_SCHED_GETAFFINITY + { + int ret; + cpu_set_t mask; + CPU_ZERO(&mask); + ret = sched_getaffinity(0, sizeof(mask), &mask); + if (ret == 0) + aff = CPU_COUNT(&mask); + } +#endif + + unsigned fn = 0; +#ifdef HAVE_GETRLIMIT + { + struct rlimit rlim; + int rc = getrlimit(RLIMIT_NOFILE, &rlim); + if (rc == 0) + fn = max((rlim_t)1, (rlim.rlim_cur - 100) / 4); + // at least 2 fds are used by each listener thread etc. + // plus a bunch to account for shared libraries and such + } +#endif + + unsigned d = min(max(sth, 1U), + min(max(aff, 1U), + max(fn, 1U))); + return d; +} + + +// 30879: Something to help out in case of an uncaught exception. +void my_terminate_handler() +{ +#if defined(__GLIBC__) + void *array[40]; + int size = backtrace (array, 40); + backtrace_symbols_fd (array, size, STDERR_FILENO); +#endif +#if defined(__GLIBCXX__) || defined(__GLIBCPP__) + __gnu_cxx::__verbose_terminate_handler(); +#endif + abort(); +} + + int main (int argc, char *argv[]) { @@ -4092,6 +4391,8 @@ main (int argc, char *argv[]) (void) bindtextdomain (PACKAGE_TARNAME, LOCALEDIR); (void) textdomain (PACKAGE_TARNAME); + std::set_terminate(& my_terminate_handler); + /* Tell the library which version we are expecting. */ elf_version (EV_CURRENT); @@ -4119,7 +4420,6 @@ main (int argc, char *argv[]) /* Parse and process arguments. */ int remaining; - argp_program_version_hook = print_version; // this works (void) argp_parse (&argp, argc, argv, ARGP_IN_ORDER, &remaining, NULL); if (remaining != argc) error (EXIT_FAILURE, 0, @@ -4210,7 +4510,7 @@ main (int argc, char *argv[]) /* If '-C' wasn't given or was given with no arg, pick a reasonable default for the number of worker threads. */ if (connection_pool == 0) - connection_pool = std::thread::hardware_concurrency() * 2 ?: 2; + connection_pool = default_concurrency(); /* Note that MHD_USE_EPOLL and MHD_USE_THREAD_PER_CONNECTION don't work together. */ @@ -4313,8 +4613,10 @@ main (int argc, char *argv[]) obatched(clog) << "search concurrency " << concurrency << endl; obatched(clog) << "webapi connection pool " << connection_pool << (connection_pool ? "" : " (unlimited)") << endl; - if (! passive_p) + if (! passive_p) { obatched(clog) << "rescan time " << rescan_s << endl; + obatched(clog) << "scan checkpoint " << scan_checkpoint << endl; + } obatched(clog) << "fdcache fds " << fdcache_fds << endl; obatched(clog) << "fdcache mbs " << fdcache_mbs << endl; obatched(clog) << "fdcache prefetch " << fdcache_prefetch << endl; @@ -4356,6 +4658,9 @@ main (int argc, char *argv[]) if (scan_files || scan_archives.size() > 0) { + if (scan_checkpoint > 0) + scan_barrier = new sqlite_checkpoint_pb(concurrency, (unsigned) scan_checkpoint); + 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"); @@ -4382,6 +4687,7 @@ main (int argc, char *argv[]) while (! interrupted) pause (); scanq.nuke(); // wake up any remaining scanq-related threads, let them die + if (scan_barrier) scan_barrier->nuke(); // ... in case they're stuck in a barrier set_metric("ready", 0); if (verbose) @@ -4407,6 +4713,7 @@ main (int argc, char *argv[]) } debuginfod_pool_groom (); + delete scan_barrier; // NB: no problem with unconditional free here - an earlier failed regcomp would exit program (void) regfree (& file_include_regex); diff --git a/debuginfod/debuginfod.h b/debuginfod/debuginfod.h new file mode 100644 index 0000000000000000000000000000000000000000..8e7ec4f42e4c472e85f3f208dce6126c41549c12 --- /dev/null +++ b/debuginfod/debuginfod.h @@ -0,0 +1,121 @@ +/* External declarations for the libdebuginfod client library. + 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 + 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 . */ + +#ifndef _DEBUGINFOD_CLIENT_H +#define _DEBUGINFOD_CLIENT_H 1 + +/* Names of environment variables that control the client logic. */ +#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" +#define DEBUGINFOD_RETRY_LIMIT_ENV_VAR "DEBUGINFOD_RETRY_LIMIT" +#define DEBUGINFOD_MAXSIZE_ENV_VAR "DEBUGINFOD_MAXSIZE" +#define DEBUGINFOD_MAXTIME_ENV_VAR "DEBUGINFOD_MAXTIME" +#define DEBUGINFOD_HEADERS_FILE_ENV_VAR "DEBUGINFOD_HEADERS_FILE" + +/* The libdebuginfod soname. */ +#define DEBUGINFOD_SONAME "libdebuginfod.so.1" + +/* Handle for debuginfod-client connection. */ +#ifndef _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF +typedef struct debuginfod_client debuginfod_client; +#define _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF 1 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Create a handle for a new debuginfod-client session. */ +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 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, + char **path); + +int debuginfod_find_executable (debuginfod_client *client, + const unsigned char *build_id, + int build_id_len, + char **path); + +int debuginfod_find_source (debuginfod_client *client, + const unsigned char *build_id, + int build_id_len, + const char *filename, + char **path); + +int debuginfod_find_section (debuginfod_client *client, + const unsigned char *build_id, + int build_id_len, + const char *section, + char **path); + +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); + +/* Returns set of x-debuginfod* header lines received from current or + last active transfer, \n separated, if known. */ +const char* debuginfod_get_headers(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); + +#ifdef __cplusplus +} +#endif + + +#endif /* _DEBUGINFOD_CLIENT_H */ diff --git a/debuginfod/debuginfod.h.in b/debuginfod/debuginfod.h.in index 69c9efd2cf99dff1686b352192e34d690a6e6511..4a256ba9af1f89d3b3205b0fcf5e51166166bffc 100644 --- a/debuginfod/debuginfod.h.in +++ b/debuginfod/debuginfod.h.in @@ -44,7 +44,10 @@ #define DEBUGINFOD_SONAME "@LIBDEBUGINFOD_SONAME@" /* Handle for debuginfod-client connection. */ +#ifndef _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF typedef struct debuginfod_client debuginfod_client; +#define _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF 1 +#endif #ifdef __cplusplus extern "C" { diff --git a/doc/ChangeLog b/doc/ChangeLog index 7b18dbef96d12c807022f476e0f7ecf41ba5e72b..7f2d6ff4fd31ad679fb34c5f2f03213fc9744352 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,11 @@ +2023-02-14 Mark Wielaard + + * debuginfod.8: Add .TP before -g. + +2023-01-11 Frank Ch. Eigler + + * debuginfod.8: Tweak -c/-C documentation for heuristic defaults. + 2022-10-31 Aaron Merey * Makefile.am (notrans_dist_man3_MANS): Add debuginfod_find_section.3. diff --git a/doc/Makefile.am b/doc/Makefile.am index db5a842e9556e1980e2b0825bc615548126645fc..87de4f0beb7ff3fd389eefa18e519d9823910270 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -17,7 +17,7 @@ ## You should have received a copy of the GNU General Public License ## along with this program. If not, see . EXTRA_DIST = COPYING-GFDL README -dist_man1_MANS=readelf.1 elfclassify.1 +dist_man1_MANS=readelf.1 elfclassify.1 srcfiles.1 notrans_dist_man3_MANS=elf_update.3 elf_getdata.3 elf_clone.3 elf_begin.3 notrans_dist_man7_MANS= notrans_dist_man8_MANS= diff --git a/doc/debuginfod-find.1 b/doc/debuginfod-find.1 index 957ec7e716f9cb2c1a42d680ab56b36a6ba04656..7d577babeb89ba1301f5063b6ccbe239cb08adb0 100644 --- a/doc/debuginfod-find.1 +++ b/doc/debuginfod-find.1 @@ -92,6 +92,19 @@ 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: for software packaged by distributions, the CU +compilation-directory may not be obvious. It can be found by +inspecting AT_comp_dir values in downloaded debuginfo. For example, +the comp_dir of the Fedora 37 version of /bin/ls can be found as +follows: + +.SAMPLE +% debuginfod-find debuginfo /bin/ls +~/.cache/debuginfod_client/03529d48345409576cd5c82a56ad08555088d353/ +% eu-readelf -w ~/.cache/debuginfod_client/03529d48345409576cd5c82a56ad08555088d353/debuginfo | grep comp_dir + comp_dir (line_strp) "/usr/src/debug/coreutils-9.1-6.fc37.x86_64/separate" +.ESAMPLE + 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 diff --git a/doc/debuginfod.8 b/doc/debuginfod.8 index 93db47e1bc2cb74b92e90eb2188c8be1082126b7..4f1f04b386bdde4acf7e09a6f047c214849790c8 100644 --- a/doc/debuginfod.8 +++ b/doc/debuginfod.8 @@ -172,8 +172,12 @@ interrupting a groom pass (if any). .TP .B "\-r" -Apply the -I and -X during groom cycles, so that files excluded by the regexes are removed from the index. These parameters are in addition to what normally qualifies a file for grooming, not a replacement. +Apply the -I and -X during groom cycles, so that most content related +to files excluded by the regexes are removed from the index. Not all +content can be practically removed, so eventually a "\-G" +"maximal-groom" operation may be needed. +.TP .B "\-g SECONDS" "\-\-groom\-time=SECONDS" Set the groom time for the index database. This is the amount of time the grooming thread will wait after finishing a grooming pass before @@ -202,8 +206,9 @@ do maximal-grooming. See also the \fIDATA MANAGEMENT\fP section. 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. +an ELF file and especially decompressing archives. The default is +related to the number of processors on the system and other +constraints; the minimum is 1. .TP .B "\-C" "\-C=NUM" "\-\-connection\-pool" "\-\-connection\-pool=NUM" @@ -216,9 +221,9 @@ no option, \-C use a fixed thread pool sized automatically \-C=NUM use a fixed thread pool sized NUM, minimum 2 .TE -The first mode is a simple and safe configuration based on the number -of processors. The second mode is suitable for tuned load-limiting -configurations facing unruly traffic. +The first mode is a simple and safe configuration related to the +number of processors and other constraints. The second mode is +suitable for tuned load-limiting configurations facing unruly traffic. .TP .B "\-L" @@ -277,6 +282,13 @@ Disable scan of the dwarf source info of debuginfo sections. If a setup has no access to source code, the source info is not required. +.TP +.B "\-\-scan\-checkpoint=NUM" +Run a synchronized SQLITE WAL checkpoint operation after every NUM +completed archive or file scans. This may slow down parallel scanning +phase somewhat, but generate much smaller "-wal" temporary files on +busy servers. The default is 256. Disabled if 0. + .TP .B "\-v" Increase verbosity of logging to the standard error file descriptor. @@ -292,18 +304,35 @@ Unknown buildid / request combinations result in HTTP error codes. This file service resemblance is intentional, so that an installation can take advantage of standard HTTP management infrastructure. -Upon finding a file in an archive or simply in the database, some -custom http headers are added to the response. For files in the -database X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE are added. -X-DEBUGINFOD-FILE is simply the unescaped filename and -X-DEBUGINFOD-SIZE is the size of the file. For files found in archives, -in addition to X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE, -X-DEBUGINFOD-ARCHIVE is added. X-DEBUGINFOD-ARCHIVE is the name of the -archive the file was found in. +For most queries, some custom http headers are added to the response, +providing additional metadata about the buildid-related response. For example: + +.SAMPLE +% debuginfod-find -v debuginfo /bin/ls |& grep -i x-debuginfo +x-debuginfod-size: 502024 +x-debuginfod-archive: /mnt/fedora_koji_prod/koji/packages/coreutils/9.3/4.fc39/x86_64/coreutils-debuginfo-9.3-4.fc39.x86_64.rpm +x-debuginfod-file: /usr/lib/debug/usr/bin/ls-9.3-4.fc39.x86_64.debug +.ESAMPLE + +.TP +X-DEBUGINFOD-SIZE +The size of the file, in bytes. This may differ from the http Content-Length: +field (if present), due to compression in transit. -There are three requests. In each case, the buildid is encoded as a -lowercase hexadecimal string. For example, for a program \fI/bin/ls\fP, -look at the ELF note GNU_BUILD_ID: +.TP +X-DEBUGINFOD-FILE +The full path name of the file related to the given buildid. + +.TP +X-DEBUGINFOD-ARCHIVE +The full path name of the archive that contained the above file, if any. + + + + +There are a handful of buildid-related requests. In each case, the +buildid is encoded as a lowercase hexadecimal string. For example, +for a program \fI/bin/ls\fP, look at the ELF note GNU_BUILD_ID: .SAMPLE % readelf -n /bin/ls | grep -A4 build.id @@ -370,7 +399,7 @@ extract the contents of an ELF/DWARF section named SECTION from the debuginfo file matching BUILDID. If the debuginfo file can't be found or the section has type SHT_NOBITS, then the server will attempt to extract the section from the executable matching BUILDID. If the section is -succesfully extracted then this request results in a binary object +successfully extracted then this request results in a binary object of the section's contents. Note that this result is the raw binary contents of the section, not an ELF file. @@ -379,8 +408,7 @@ contents of the section, not an ELF file. This endpoint returns a Prometheus formatted text/plain dump of a variety of statistics about the operation of the debuginfod server. The exact set of metrics and their meanings may change in future -versions. Caution: configuration information (path names, versions) -may be disclosed. +versions. .SH DATA MANAGEMENT @@ -473,8 +501,16 @@ a denial-of-service in terms of RAM, CPU, disk I/O, or network I/O. If this is a problem, users are advised to install debuginfod with a HTTPS reverse-proxy front-end that enforces site policies for firewalling, authentication, integrity, authorization, and load -control. The \fI/metrics\fP webapi endpoint is probably not -appropriate for disclosure to the public. +control. + +Front-end proxies may elide sensitive path name components in +X-DEBUGINFOD-FILE/ARCHIVE response headers. For example, using Apache +httpd's \fBmod_headers\fP, you can remove the entire directory name +prefix: + +.SAMPLE +Header edit x-debuginfod-archive ".*/" "" +.ESAMPLE When relaying queries to upstream debuginfods, debuginfod \fBdoes not\fP include any particular security features. It trusts that the binaries diff --git a/doc/debuginfod_get_headers.3 b/doc/debuginfod_get_headers.3 deleted file mode 100644 index 1db55982c65fd70cc6251f33baef547ca688c900..0000000000000000000000000000000000000000 --- a/doc/debuginfod_get_headers.3 +++ /dev/null @@ -1,2 +0,0 @@ -.so man3/debuginfod_find_debuginfo.3 - diff --git a/doc/elfutils.sgml b/doc/elfutils.sgml deleted file mode 100644 index e8a483a2e2952a2770d7c24cb733814740f44303..0000000000000000000000000000000000000000 --- a/doc/elfutils.sgml +++ /dev/null @@ -1,444 +0,0 @@ -new-bu"> -]> - - - New Binutils User's and Reference Manual - - - <filename>libelf</filename> <acronym>ABI</acronym> - - The ABI of the - libelf implemented in the &package; package - is following that of Sun's implementation which in turn in derived - from the original SysVr4 implementation. There are some - extensions over Sun's versions, though, which makes it impossible - to replace this implementation with Sun's. - - - - - - Elf_Data - Descriptor for Data Buffer - - - - -#include <libelf.h> - - - - - Description - - The Elf_Data structure is as - a descriptor for a data buffer associated with a section. - Every data buffer is associated with a specific section (see - Elf_Scn). - - A data buffer is created when reading a file. In - this case only a single buffer is present in the section. The - user can add as many sections as wanted to a section and they - can be retrieved using the elf_getdata - and elf_rawdata functions. - - The Elf_Data structure - contains the following members: - - - void *d_buf - Elf_Type d_type - size_t d_size - off_t d_off - size_t d_align - unsigned int d_version - - - All of these members can be modified directly by the - user. They can be used to resize a section, to change its - content or type, and many more tasks. This is also true for - the data read from a file. The meaning of each member is as - follows: - - - - d_buf - - The d_buf member is - the pointer to the buffer with the actual data. When - the ELF file was read from a file the first and only - data buffer of a section is allocated by the - libelf library. The user should - not try to resize or free this buffer. When the user - adds a new data buffer to a section the associated - memory block is normally allocated by the user. It is - important that the buffer must have a lifetime at least - until the ELF file is closed entirely (important when - the buffer is allocated on the stack). If the buffer is - not allocated on the stack it is the user's - responsibility to free the buffer after it is not used - anymore. The d_buf member - can contain a null pointer if the data buffer is - empty. - - - - - d_type - - The d_type - determines how the data of the buffer is interpreted. - This type is determined from the section type and must - be the same for all data buffers for a section. See - Elf_Type for more information. - The - function uses this information to convert the data of - the buffer between the external form and the form - represented to the user and back if necessary. - - - - - d_version - - The d_version - contains the ELF version of the file. - - - - - d_size - - The d_size contains - the size of the buffer in bytes. - - - - - d_off - - The d_off is the - offset into the section in bytes. - - - - - d_align - - The d_align is the - address alignment of the section in bytes. - - - - - - - - - - - elf_getdata - Get washed data of section - - - - - -#include <libelf.h> - - - Elf_Data *elf_getdata - Elf_Scn *scn - Elf_Data *data - - - - - - Description - - The elf_getdata function allows - the user to retrieve the data buffers of the section - scn. There can be more than one buffer - if the user explicitly added them. When a file is read the - libelf library creates exactly one data - buffer. - - The first buffer in the list can be obtained by - passing a null pointer in the parameter - data. To get the next data buffer the - previously returned value must be passed in the - data parameter. If there are no more - buffer left in the list a null pointer is returned. - - If the data parameter is not a - null pointer it must be a descriptor for a buffer - associated with the section scn. If - this is not the case a null pointer is returned. To - facilitate error handling elf_getdata - also returns a null pointer if the scn - parameter is a null pointer. - - - - - - elf_update - update an ELF descriptor - - - - - -#include <libelf.h> - - - off_t elf_update - Elf *elf - Elf_Cmd cmd - - - - - - Description - - The user is responsible for filling in the following - fields in the named data structures: - - - Fields not set by <function>elf_update</function> - - - - - - Data Structure - Member - Exception - - - - - Elfxx_Ehdr - e_ident[EI_DATA] - see below - - - - e_type - - - - - - e_machine - - - - - e_version - see below - - - - e_entry - - - - - e_phoff - if ELF_F_LAYOUT is used - - - - e_shoff - if ELF_F_LAYOUT is used - - - - e_flags - - - - - e_shstrndx - - - - Elfxx_Phdr - p_type - - - - - p_offset - - - - - p_vaddr - - - - - p_paddr - - - - - p_filesz - - - - - p_memsz - - - - - p_flags - - - - - p_align - - - - - Elfxx_Shdr - sh_name - - - - - sh_type - - - - - sh_flags - - - - - sh_addr - - - - - sh_offset - if ELF_F_LAYOUT is used - - - - sh_size - if ELF_F_LAYOUT is used - - - - sh_link - - - - - - sh_info - - - - - sh_addralign - if ELF_F_LAYOUT is used - - - - sh_entsize - - - - - Elf_Data - d_buf - - - - - d_type - - - - - d_size - - - - - d_off - if ELF_F_LAYOUT is used - - - - d_align - - - - - - d_version - - - - -
- - Two fields of the ELF header are handled in a special - way: - - - - e_version - - The user can set this field to the vvalue for - the version to be used. It is an error if the library - cannot handle this version. If the field contains the - value EV_NONE the library will fill in - its own internal version. - - - - - e_ident[EI_DATA] - - The user should fill in the byte ordering for - the file. If the value of the field is - ELFDATANONE the library replaces it - with the native byte ordering for the machine. - - - -
-
-
- - - <filename>libelf</filename> Internals - - Since the binary format handling tools need constant - 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. - -
- diff --git a/doc/man3 b/doc/man3 deleted file mode 120000 index 945c9b46d684f08ec84cb316e1dc0061e361f794..0000000000000000000000000000000000000000 --- a/doc/man3 +++ /dev/null @@ -1 +0,0 @@ -. \ No newline at end of file diff --git a/doc/man7 b/doc/man7 deleted file mode 120000 index 945c9b46d684f08ec84cb316e1dc0061e361f794..0000000000000000000000000000000000000000 --- a/doc/man7 +++ /dev/null @@ -1 +0,0 @@ -. \ No newline at end of file diff --git a/doc/srcfiles.1 b/doc/srcfiles.1 new file mode 100644 index 0000000000000000000000000000000000000000..6149c21bb805e2cdd0f034d8871a41694a6c703c --- /dev/null +++ b/doc/srcfiles.1 @@ -0,0 +1,133 @@ +.\" Copyright 2023 Red Hat Inc. +.\" Mon 2023-Sept 23 Housam Alamour +.\" Contact elfutils-devel@sourceware.org to correct errors or typos. +.TH EU-SRCFILES 1 "2023-Sept-25" "elfutils" + +.de SAMPLE +.br +.RS 0 +.nf +.nh +\fB +.. +.de ESAMPLE +\fP +.hy +.fi +.RE +.. + +.SH "NAME" +eu-srcfiles \- Lists the source files of a DWARF/ELF file. + +.SH "SYNOPSIS" +eu-srcfiles [\fB\-0\fR|\fB\-\-null\fR] [\fB\-c\fR|\fB\-\-cu\-only\fR] [\fB\-v\fR|\fB\-\-verbose\fR] INPUT + +.SH "DESCRIPTION" +\fBeu-srcfiles\fR lists the source files of a given \s-DWARF/ELF\s0 +file. This list is based on a search of the DWARF debuginfo, which +may be automatically fetched by debuginfod if applicable. The target +file may be an executable, a coredump, a process, or even the running +kernel. The default is the file 'a.out'. The source file names are +made unique and printed to standard output. + +.SH "INPUT OPTIONS" +The long and short forms of options, shown here as alternatives, are +equivalent. +.TP +\fB--core=COREFILE\fR +Find addresses from signatures found in COREFILE. + +.TP +\fB--debuginfo-path=PATH\fR +Search path for separate debuginfo files. + +.TP +\fB-e FILE\fR, \fB--executable=FILE\fR +Find addresses in FILE. + +.TP +\fB-k\fR, \fB--kernel\fR +Find addresses in the running kernel. + +.TP +\fB-K\fR, \fB--offline-kernel[=RELEASE]\fR +Kernel with all modules. + +.TP +\fB-M FILE\fR, \fB--linux-process-map=FILE\fR +Find addresses in files mapped as read from FILE in Linux /proc/PID/maps format. + +.TP +\fB-p PID\fR, \fB--pid=PID\fR +Find addresses in files mapped into process PID. + +.TP +\fB-?\fR, \fB--help\fR +Give this help list. + +.TP +\fB--usage\fR +Give a short usage message. + +.TP +\fB-V\fR, \fB--version\fR +Print program version. + +.SH "OUTPUT OPTIONS" + +.TP +\fB\-0, \-\-null\fR +Separate items by a null instead of a newline. + +.TP +\fB\-c, \-\-cu\-only\fR +Only list the CU names. + +.TP +\fB\-v, \-\-verbose\fR +Increase verbosity of logging messages. + + +.SH EXAMPLES + +List all source files for a binary. +.SAMPLE +eu-srcfiles -e /bin/ls +.ESAMPLE + +List all compilation units (CU) names for a given process (including shared libraries). +.SAMPLE +eu-srcfiles -c -p $$ +.ESAMPLE + +List source files of a binary based on its buildid, using debuginfod. +.SAMPLE +binary=`debuginfod-find executable 9c22d8d9e42bd051ffdc1064fdfd456ba781c629` +eu-srcfiles -c -e $binary +.ESAMPLE + +Show the source code of the first CU of a shared library. +.SAMPLE +binary=/usr/lib64/libc.so.6 +srcfile=`eu-srcfiles -c -e $binary | head -1` +cat `debuginfod-find source $binary $srcfile` +.ESAMPLE + +List the source files of a kernel image. +.SAMPLE +eu-srcfiles -e /boot/vmlinuz-`uname -r` +.ESAMPLE + + +.SH "AUTHOR" +Written by Housam Alamour. + +.SH "REPORTING BUGS" +Please reports bugs at https://sourceware.org/bugzilla/ + +.SH "COPYRIGHT" +Copyright (c) 2023 Red Hat Inc. License GPLv3+: GNU GPL version 3 or +later . This is free software: you +are free to change and redistribute it. There is NO WARRANTY, to the +extent permitted by law. diff --git a/include/elfutils/libdwfl.h b/include/elfutils/libdwfl.h deleted file mode 120000 index 240eb565eeb89f9801291880761e650725aad04d..0000000000000000000000000000000000000000 --- a/include/elfutils/libdwfl.h +++ /dev/null @@ -1 +0,0 @@ -../../libdwfl/libdwfl.h \ No newline at end of file diff --git a/lib/ChangeLog b/lib/ChangeLog index 6bb0d4d068de3552c5b4fa581c55a34238251f34..5ab9477e88dfec594f3ce53ac21a53c77f2f16a4 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,7 @@ +2022-12-20 Mark Wielaard + + * Makefile.am (xmalloc_CFLAGS): Remove. + 2022-09-21 Yonggang Luo * color.c: Don't include unistd.h. diff --git a/lib/Makefile.am b/lib/Makefile.am index 42ddf5ae90088610663feeac19c7e997620f8c88..b3bb929f86269629041bf0b6deda4139c03b3718 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -41,7 +41,3 @@ noinst_HEADERS = fixedsizehash.h libeu.h system.h dynamicsizehash.h list.h \ eu-config.h color.h printversion.h bpf.h \ atomics.h stdatomic-fbsd.h dynamicsizehash_concurrent.h EXTRA_DIST = dynamicsizehash.c dynamicsizehash_concurrent.c - -if !GPROF -xmalloc_CFLAGS = -ffunction-sections -endif diff --git a/lib/dynamicsizehash_concurrent.c b/lib/dynamicsizehash_concurrent.c index 7c4fedfcf641c6f07421342e8dbd23a3f09429ab..2ea545e00f722b2b8faeab21d49677ee8f0c5b46 100644 --- a/lib/dynamicsizehash_concurrent.c +++ b/lib/dynamicsizehash_concurrent.c @@ -42,7 +42,7 @@ static size_t lookup (NAME *htab, HASHTYPE hval) { - /* First hash function: simply take the modul but prevent zero. Small values + /* First hash function: simply take the modulus but prevent zero. Small values can skip the division, which helps performance when this is common. */ size_t idx = 1 + (hval < htab->size ? hval : hval % htab->size); @@ -77,7 +77,7 @@ lookup (NAME *htab, HASHTYPE hval) static int insert_helper (NAME *htab, HASHTYPE hval, TYPE val) { - /* First hash function: simply take the modul but prevent zero. Small values + /* First hash function: simply take the modulus but prevent zero. Small values can skip the division, which helps performance when this is common. */ size_t idx = 1 + (hval < htab->size ? hval : hval % htab->size); diff --git a/lib/eu-config.h b/lib/eu-config.h index 78a5c4fed1ca49894e7ae7f1096e3b1415508908..feb079dbc2f6d999f000423a8ff7ac92f99854da 100644 --- a/lib/eu-config.h +++ b/lib/eu-config.h @@ -33,13 +33,18 @@ # include # include # define rwlock_define(class,name) class pthread_rwlock_t name +# define once_define(class,name) class pthread_once_t name = PTHREAD_ONCE_INIT # define RWLOCK_CALL(call) \ ({ int _err = pthread_rwlock_ ## call; assert_perror (_err); }) +# define ONCE_CALL(call) \ + ({ int _err = pthread_ ## call; assert_perror (_err); }) # define rwlock_init(lock) RWLOCK_CALL (init (&lock, NULL)) # define rwlock_fini(lock) RWLOCK_CALL (destroy (&lock)) # define rwlock_rdlock(lock) RWLOCK_CALL (rdlock (&lock)) # define rwlock_wrlock(lock) RWLOCK_CALL (wrlock (&lock)) # define rwlock_unlock(lock) RWLOCK_CALL (unlock (&lock)) +# define once(once_control, init_routine) \ + ONCE_CALL (once (&once_control, init_routine)) #else /* Eventually we will allow multi-threaded applications to use the libraries. Therefore we will add the necessary locking although @@ -50,6 +55,8 @@ # define rwlock_rdlock(lock) ((void) (lock)) # define rwlock_wrlock(lock) ((void) (lock)) # define rwlock_unlock(lock) ((void) (lock)) +# define once_define(class,name) +# define once(once_control, init_routine) init_routine() #endif /* USE_LOCKS */ #include diff --git a/lib/printversion.c b/lib/printversion.c index 7d31fa832b2cf8e60b712aba8e6c575113ab642e..be629b59ce63c42bd49c607a3ac5b06af98d298a 100644 --- a/lib/printversion.c +++ b/lib/printversion.c @@ -40,5 +40,5 @@ print_version (FILE *stream, struct argp_state *state) 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\ -"), "2022", PACKAGE_URL); +"), "2023", PACKAGE_URL); } diff --git a/lib/printversion.h b/lib/printversion.h index a9e059ff552784cadabd6a6c3de9a7dad8efe3f5..6811aa5b04cd1b7ccbf1f836436323cab7ee0377 100644 --- a/lib/printversion.h +++ b/lib/printversion.h @@ -32,6 +32,9 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif /* Defined in version.c. Common ARGP_PROGRAM_VERSION_HOOK_DEF. */ void print_version (FILE *stream, struct argp_state *state); @@ -39,11 +42,18 @@ void print_version (FILE *stream, struct argp_state *state); argp_program_bug_address, in all programs. argp.h declares these variables as non-const (which is correct in general). But we can do better, it is not going to change. So we want to move them into - the .rodata section. Define macros to do the trick. */ + the .rodata section. Define macros to do the trick. The default + linkage for consts in C++ is internal, so declare them extern. */ +extern void (*const apvh) (FILE *, struct argp_state *); #define ARGP_PROGRAM_VERSION_HOOK_DEF \ void (*const apvh) (FILE *, struct argp_state *) \ __asm ("argp_program_version_hook") +extern const char *const apba__; #define ARGP_PROGRAM_BUG_ADDRESS_DEF \ const char *const apba__ __asm ("argp_program_bug_address") +#ifdef __cplusplus +} +#endif + #endif // PRINTVERSION_H diff --git a/lib/system.h b/lib/system.h index bbbe06c443072432b6dc9bda5811376441b0ae5e..1c914efc066fe858d156996c10e70fe62984113a 100644 --- a/lib/system.h +++ b/lib/system.h @@ -39,7 +39,7 @@ #include #include -/* System dependend headers */ +/* System dependent headers */ #include #include #include diff --git a/libasm/ChangeLog b/libasm/ChangeLog index ce0f24f46af78f6ca4cd382ff741075c8c7ed68e..f23d59142435dd5faf1b9073f94d670bec96cdb5 100644 --- a/libasm/ChangeLog +++ b/libasm/ChangeLog @@ -1,3 +1,13 @@ +2023-02-17 Mark Wielaard + + * asm_end.c (free_section): free scnp->content last. + +2022-12-20 Mark Wielaard + + * disasm_begin.c: Include libeblP.h. + * disasm_cb.c: Likewise. + * bpf_disasm.c: Likewise and include common.h. + 2022-10-21 Yonggang Luo * asm_abort.c: Don't include unistd.h. diff --git a/libasm/Makefile.am b/libasm/Makefile.am index c2b54811504c57e6db97820536c911c95b9f2c44..1e6b63e83a80d4983c5d9bc5c44b8b9d4a4aae12 100644 --- a/libasm/Makefile.am +++ b/libasm/Makefile.am @@ -64,7 +64,8 @@ libasm_so_LIBS = libasm_pic.a 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 \ + -Wl,--version-script,$< \ + $(NO_UNDEFINED) \ -Wl,--whole-archive $(libasm_so_LIBS) -Wl,--no-whole-archive \ $(libasm_so_LDLIBS) @$(textrel_check) diff --git a/libasm/asm_end.c b/libasm/asm_end.c index c06d2366ade924967eab61414a4fe578eaf80c30..29165ac48d4ab83499f0e40bf0d2512e239a4d18 100644 --- a/libasm/asm_end.c +++ b/libasm/asm_end.c @@ -541,16 +541,18 @@ free_section (AsmScn_t *scnp) if (scnp->subnext != NULL) free_section (scnp->subnext); + /* This is a circular single linked list. */ struct AsmData *data = scnp->content; if (data != NULL) - do - { - oldp = data; - data = data->next; - free (oldp); - } - while (oldp != scnp->content); - + { + while (data != scnp->content) + { + oldp = data; + data = data->next; + free (oldp); + } + free (scnp->content); + } free (scnp); } diff --git a/libasm/asm_newscn.c b/libasm/asm_newscn.c index d258d969fef789b0215e84a9f751f4fd703175be..f28c40f962bc6c88b02f194ed4b64be2c9c23456 100644 --- a/libasm/asm_newscn.c +++ b/libasm/asm_newscn.c @@ -41,19 +41,25 @@ /* Memory for the default pattern. The type uses a flexible array - which does work well with a static initializer. So we play some - dirty tricks here. */ -static const struct + which does work well with a static initializer. Work around this by + wrapping it in a union, whose second member is a char array 1 byte larger + than struct FillPattern. According to 6.7.9, this does what we need: + + If an object that has static or thread storage duration is not + initialized explicitly, then ... if it is a union, the first named + member is initialized (recursively) according to these rules, and + any padding is initialized to zero bits. */ + +static const union { struct FillPattern pattern; - char zero; + char zeroes[sizeof(struct FillPattern) + 1]; } xdefault_pattern = { .pattern = { .len = 1 }, - .zero = '\0' }; const struct FillPattern *__libasm_default_pattern = &xdefault_pattern.pattern; diff --git a/libasm/disasm_begin.c b/libasm/disasm_begin.c index cb10f66e85a82166d6b4987f8617a2a1b23d15d1..78db90c799a9f3c7e2727b58d6593c2cb650ff26 100644 --- a/libasm/disasm_begin.c +++ b/libasm/disasm_begin.c @@ -34,7 +34,7 @@ #include #include "libasmP.h" -#include "../libebl/libeblP.h" +#include "libeblP.h" DisasmCtx_t * diff --git a/libasm/disasm_cb.c b/libasm/disasm_cb.c index 80f8b25bf302adc2d9566ece168abbe8d6115ce3..9353e2e518b6e55ae09ad0e105c2a26b3e68602f 100644 --- a/libasm/disasm_cb.c +++ b/libasm/disasm_cb.c @@ -33,7 +33,7 @@ #include #include "libasmP.h" -#include "../libebl/libeblP.h" +#include "libeblP.h" struct symtoken diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog index 06ffe02fda024604c0c0b6346b6dae54d5f5ec12..d14cd237df28aba1092d31783195dbc68882f479 100644 --- a/libcpu/ChangeLog +++ b/libcpu/ChangeLog @@ -1,3 +1,26 @@ +2022-12-18 Yonggang Luo + + * i386_mne.h: New file, extracted from i386_disasm.c. + * Makefile.am (noinst_HEADERS): Add i386_mne.h. + (i386_parse_CFLAGS): Removed. + * i386_disasm.c: Include i386_mne.h. + * i386_parse.y: Include i386_mne.h. + (instrtable_out): Use MNE_COUNT instead of NMNES. + +2022-12-18 Yonggang Luo + + * i386_disasm.c (i386_disasm): Use __asm instead of asm. + +2022-12-20 Mark Wielaard + + * bpf_disasm.c: Include common.h and libeblP.h. + * i386_disasm.c: Include libeblP.h. + * riscv_disasm.c: Likewise. + +2022-10-21 Yonggang Luo + + * i386_data.h: Define FCT_mod$64r_m as FCT_mod$r_m for i386. + 2022-10-21 Yonggang Luo * i386_disasm.c: Don't include endian.h. diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am index 57d0a1641f20678dabf4d9165d09dc0205a74c26..4ba1be56d703828776b01bb456aeb29d2334d809 100644 --- a/libcpu/Makefile.am +++ b/libcpu/Makefile.am @@ -40,7 +40,7 @@ AM_YFLAGS = -p$( #include "bpf.h" -#include "../libelf/common.h" -#include "../libebl/libeblP.h" +#include "common.h" +#include "libeblP.h" static const char class_string[8][8] = { [BPF_LD] = "ld", diff --git a/libcpu/defs/i386.doc b/libcpu/defs/i386.doc deleted file mode 100644 index 732cd2385b8aabd75b0407a723d2fcdb095073e9..0000000000000000000000000000000000000000 --- a/libcpu/defs/i386.doc +++ /dev/null @@ -1,74 +0,0 @@ -{imm} only parameter: - - is {s} in opcode: {s} == 0, unsigned (8/)16/32 bit immediate - {s} == 1, signed 8 bit immediate - -{es:di}: segment register normally %es, can be overwritten - edi/di depending on apfx - -{ds:si}: segment register normally %ds, can be overwritten - esi/si depending on apfx - -{ax} al/ax/eax depending of dpfx and w - -{dx} (%edx) or (%dx) depending on apfx - - -{w} 0 = b, 1 = { no dpfx = l, dpfx = w } - -{W} no dpfx = , dpfx = w -{WW} no dpfx = l, dpfx = w - -{R} rep prefix possible -{RE} repe or repne prefix possible - -{ccc} CRx registers -{ddd} DRx registers - -{gg} 00 = b, 01 = w, 10 = d, 11 = -{0g} 00 = b, 01 = w, 10 = , 11 = -{GG} 00 = , 01 = w, 10 = d, 11 = q -{gG} 00 = , 01 = w, 10 = d, 11 = - -{modr/m} normal registers -{MODR/M} MMX registers -{ModR/m} XMM registers - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Special opcodes (prefixes): - - -01100111:{apfx} -01100110:{dpfx} - -00101110:{cs} -00111110:{ds} -00100110:{es} -01100100:{fs} -01100101:{gs} - - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -table format - -1bit RE flag -1bit R flag -16bit mnemonic -3bit suffix - -5bit fct -2bit string -6bit offset1 -5bit offset2 - -4bit fct -1bit string -6bit offset1 -4bit offset2 - -2bit fct -1bit string -3bit offset1 -1bit offset2 - -61bit diff --git a/libcpu/i386.mnemonics b/libcpu/i386.mnemonics deleted file mode 100644 index 20172aa95038bdaf7567ac67c2ce027c736ccfd5..0000000000000000000000000000000000000000 --- a/libcpu/i386.mnemonics +++ /dev/null @@ -1,515 +0,0 @@ -MNE(aaa) -MNE(aad) -MNE(aam) -MNE(aas) -MNE(adc) -MNE(add) -MNE(addpd) -MNE(addps) -MNE(addsd) -MNE(addss) -MNE(addsubpd) -MNE(addsubps) -MNE(and) -MNE(andnpd) -MNE(andnps) -MNE(andpd) -MNE(andps) -MNE(arpl) -MNE(blendpd) -MNE(blendps) -MNE(blendvpd) -MNE(blendvps) -MNE(bound) -MNE(bsf) -MNE(bsr) -MNE(bswap) -MNE(bt) -MNE(btc) -MNE(btr) -MNE(bts) -MNE(call) -MNE(clc) -MNE(cld) -MNE(clflush) -MNE(cli) -MNE(clts) -MNE(cmc) -MNE(cmov) -MNE(cmp) -MNE(cmpeqps) -MNE(cmpeqss) -MNE(cmpleps) -MNE(cmpless) -MNE(cmpltps) -MNE(cmpltss) -MNE(cmpneqps) -MNE(cmpneqss) -MNE(cmpnleps) -MNE(cmpnless) -MNE(cmpnltps) -MNE(cmpnltss) -MNE(cmpordps) -MNE(cmpordss) -MNE(cmps) -MNE(cmpunordps) -MNE(cmpunordss) -MNE(cmpxchg) -MNE(cmpxchg8b) -MNE(comisd) -MNE(comiss) -MNE(cpuid) -MNE(cvtdq2pd) -MNE(cvtdq2ps) -MNE(cvtpd2dq) -MNE(cvtpd2pi) -MNE(cvtpd2ps) -MNE(cvtpi2pd) -MNE(cvtpi2ps) -MNE(cvtps2dq) -MNE(cvtps2pd) -MNE(cvtps2pi) -MNE(cvtsd2si) -MNE(cvtsd2ss) -MNE(cvtsi2sd) -MNE(cvtsi2ss) -MNE(cvtss2sd) -MNE(cvtss2si) -MNE(cvttpd2dq) -MNE(cvttpd2pi) -MNE(cvttps2dq) -MNE(cvttps2pi) -MNE(cvttsd2si) -MNE(cvttss2si) -MNE(daa) -MNE(das) -MNE(dec) -MNE(div) -MNE(divpd) -MNE(divps) -MNE(divsd) -MNE(divss) -MNE(dppd) -MNE(dpps) -MNE(emms) -MNE(enter) -MNE(f2xm1) -MNE(fabs) -MNE(fadd) -MNE(faddp) -MNE(fbld) -MNE(fbstp) -MNE(fchs) -MNE(fclex) -MNE(fcmovb) -MNE(fcmovbe) -MNE(fcmove) -MNE(fcmovnb) -MNE(fcmovnbe) -MNE(fcmovne) -MNE(fcmovnu) -MNE(fcmovu) -MNE(fcom) -MNE(fcomi) -MNE(fcomip) -MNE(fcomp) -MNE(fcompp) -MNE(fcos) -MNE(fdecstp) -MNE(fdiv) -MNE(fdivp) -MNE(fdivr) -MNE(fdivrp) -MNE(ffree) -MNE(fiadd) -MNE(ficom) -MNE(ficomp) -MNE(fidiv) -MNE(fidivl) -MNE(fidivr) -MNE(fidivrl) -MNE(fild) -MNE(fildl) -MNE(fildll) -MNE(fimul) -MNE(fincstp) -MNE(finit) -MNE(fist) -MNE(fistp) -MNE(fistpll) -MNE(fisttp) -MNE(fisttpll) -MNE(fisub) -MNE(fisubr) -MNE(fld) -MNE(fld1) -MNE(fldcw) -MNE(fldenv) -MNE(fldl2e) -MNE(fldl2t) -MNE(fldlg2) -MNE(fldln2) -MNE(fldpi) -MNE(fldt) -MNE(fldz) -MNE(fmul) -MNE(fmulp) -MNE(fnclex) -MNE(fninit) -MNE(fnop) -MNE(fnsave) -MNE(fnstcw) -MNE(fnstenv) -MNE(fnstsw) -MNE(fpatan) -MNE(fprem) -MNE(fprem1) -MNE(fptan) -MNE(frndint) -MNE(frstor) -MNE(fscale) -MNE(fsin) -MNE(fsincos) -MNE(fsqrt) -MNE(fst) -MNE(fstp) -MNE(fstpt) -MNE(fsub) -MNE(fsubp) -MNE(fsubr) -MNE(fsubrp) -MNE(ftst) -MNE(fucom) -MNE(fucomi) -MNE(fucomip) -MNE(fucomp) -MNE(fwait) -MNE(fxam) -MNE(fxch) -MNE(fxrstor) -MNE(fxsave) -MNE(fxtract) -MNE(fyl2x) -MNE(fyl2xp1) -MNE(getsec) -MNE(haddpd) -MNE(haddps) -MNE(hlt) -MNE(hsubpd) -MNE(hsubps) -MNE(idiv) -MNE(imul) -MNE(in) -MNE(inc) -MNE(ins) -MNE(insertps) -MNE(int) -MNE(int3) -MNE(into) -MNE(invd) -MNE(invlpg) -MNE(iret) -MNE(j) -MNE(jmp) -MNE(lahf) -MNE(lar) -MNE(lcall) -MNE(lddqu) -MNE(ldmxcsr) -MNE(lds) -MNE(lea) -MNE(leave) -MNE(les) -MNE(lfence) -MNE(lfs) -MNE(lgdt) -MNE(lgs) -MNE(lidt) -MNE(ljmp) -MNE(lldt) -MNE(lmsw) -MNE(lock) -MNE(lods) -MNE(loop) -MNE(loope) -MNE(loopne) -MNE(lret) -MNE(lsl) -MNE(lss) -MNE(ltr) -MNE(maskmovdqu) -MNE(maskmovq) -MNE(maxpd) -MNE(maxps) -MNE(maxsd) -MNE(maxss) -MNE(mfence) -MNE(minpd) -MNE(minps) -MNE(minsd) -MNE(minss) -MNE(monitor) -MNE(mov) -MNE(movapd) -MNE(movaps) -MNE(movd) -MNE(movddup) -MNE(movdq2q) -MNE(movdqa) -MNE(movdqu) -MNE(movhlpd) -MNE(movhlps) -MNE(movhpd) -MNE(movhps) -MNE(movlhpd) -MNE(movlhps) -MNE(movlpd) -MNE(movlps) -MNE(movmskpd) -MNE(movmskps) -MNE(movntdq) -MNE(movntdqa) -MNE(movnti) -MNE(movntpd) -MNE(movntps) -MNE(movntq) -MNE(movq) -MNE(movq2dq) -MNE(movs) -MNE(movsbl) -MNE(movsd) -MNE(movshdup) -MNE(movsldup) -MNE(movss) -MNE(movswl) -MNE(movupd) -MNE(movups) -MNE(movzbl) -MNE(movzwl) -MNE(mpsadbw) -MNE(mul) -MNE(mulpd) -MNE(mulps) -MNE(mulsd) -MNE(mulss) -MNE(mwait) -MNE(neg) -MNE(nop) -MNE(not) -MNE(or) -MNE(orpd) -MNE(orps) -MNE(out) -MNE(outs) -MNE(pabsb) -MNE(pabsd) -MNE(pabsw) -MNE(packssdw) -MNE(packsswb) -MNE(packusdw) -MNE(packuswb) -MNE(paddb) -MNE(paddd) -MNE(paddq) -MNE(paddsb) -MNE(paddsw) -MNE(paddusb) -MNE(paddusw) -MNE(paddw) -MNE(palignr) -MNE(pand) -MNE(pandn) -MNE(pause) -MNE(pavgb) -MNE(pavgw) -MNE(pblendvb) -MNE(pblendw) -MNE(pcmpeqb) -MNE(pcmpeqd) -MNE(pcmpeqq) -MNE(pcmpeqw) -MNE(pcmpestri) -MNE(pcmpestrm) -MNE(pcmpgtb) -MNE(pcmpgtd) -MNE(pcmpgtq) -MNE(pcmpgtw) -MNE(pcmpistri) -MNE(pcmpistrm) -MNE(pextrw) -MNE(phaddd) -MNE(phaddsw) -MNE(phaddw) -MNE(phminposuw) -MNE(phsubd) -MNE(phsubsw) -MNE(phsubw) -MNE(pinsrb) -MNE(pinsrd) -MNE(pinsrw) -MNE(pmaddubsw) -MNE(pmaddwd) -MNE(pmaxsb) -MNE(pmaxsd) -MNE(pmaxsw) -MNE(pmaxub) -MNE(pmaxud) -MNE(pmaxuw) -MNE(pminsb) -MNE(pminsd) -MNE(pminsw) -MNE(pminub) -MNE(pminud) -MNE(pminuw) -MNE(pmovmskb) -MNE(pmovsxbd) -MNE(pmovsxbq) -MNE(pmovsxbw) -MNE(pmovsxdq) -MNE(pmovsxwd) -MNE(pmovsxwq) -MNE(pmovzxbd) -MNE(pmovzxbq) -MNE(pmovzxbw) -MNE(pmovzxdq) -MNE(pmovzxwd) -MNE(pmovzxwq) -MNE(pmuldq) -MNE(pmulhrsw) -MNE(pmulhuw) -MNE(pmulhw) -MNE(pmulld) -MNE(pmullw) -MNE(pmuludq) -MNE(pop) -MNE(popa) -MNE(popcnt) -MNE(popf) -MNE(por) -MNE(prefetch) -MNE(prefetchnta) -MNE(prefetcht0) -MNE(prefetcht1) -MNE(prefetcht2) -MNE(prefetchw) -MNE(psadbw) -MNE(pshufb) -MNE(pshufd) -MNE(pshufhw) -MNE(pshuflw) -MNE(pshufw) -MNE(psignb) -MNE(psignd) -MNE(psignw) -MNE(pslld) -MNE(pslldq) -MNE(psllq) -MNE(psllw) -MNE(psrad) -MNE(psraw) -MNE(psrld) -MNE(psrldq) -MNE(psrlq) -MNE(psrlw) -MNE(psubb) -MNE(psubd) -MNE(psubq) -MNE(psubsb) -MNE(psubsw) -MNE(psubusb) -MNE(psubusw) -MNE(psubw) -MNE(ptest) -MNE(punpckhbw) -MNE(punpckhdq) -MNE(punpckhqdq) -MNE(punpckhwd) -MNE(punpcklbw) -MNE(punpckldq) -MNE(punpcklqdq) -MNE(punpcklwd) -MNE(push) -MNE(pusha) -MNE(pushf) -MNE(pxor) -MNE(rcl) -MNE(rcpps) -MNE(rcpss) -MNE(rcr) -MNE(rdmsr) -MNE(rdpmc) -MNE(rdtsc) -MNE(ret) -MNE(rol) -MNE(ror) -MNE(roundpd) -MNE(roundps) -MNE(roundsd) -MNE(roundss) -MNE(rsm) -MNE(rsqrtps) -MNE(rsqrtss) -MNE(sahf) -MNE(sar) -MNE(sbb) -MNE(scas) -MNE(set) -MNE(sfence) -MNE(sgdtl) -MNE(shl) -MNE(shld) -MNE(shr) -MNE(shrd) -MNE(shufpd) -MNE(shufps) -MNE(sidtl) -MNE(sldt) -MNE(smsw) -MNE(sqrtpd) -MNE(sqrtps) -MNE(sqrtsd) -MNE(sqrtss) -MNE(stc) -MNE(std) -MNE(sti) -MNE(stmxcsr) -MNE(stos) -MNE(str) -MNE(sub) -MNE(subpd) -MNE(subps) -MNE(subsd) -MNE(subss) -MNE(swapgs) -MNE(syscall) -MNE(sysenter) -MNE(sysexit) -MNE(sysret) -MNE(test) -MNE(ucomisd) -MNE(ucomiss) -MNE(ud2a) -MNE(unpckhpd) -MNE(unpckhps) -MNE(unpcklpd) -MNE(unpcklps) -MNE(verr) -MNE(verw) -MNE(vmcall) -MNE(vmclear) -MNE(vmlaunch) -MNE(vmptrld) -MNE(vmptrst) -MNE(vmread) -MNE(vmresume) -MNE(vmwrite) -MNE(vmxoff) -MNE(vmxon) -MNE(wbinvd) -MNE(wrmsr) -MNE(xadd) -MNE(xchg) -MNE(xlat) -MNE(xor) -MNE(xorpd) -MNE(xorps) diff --git a/libcpu/i386_data.h b/libcpu/i386_data.h index 06356b8a09649e0752376016e142dee58957b388..fe3c4ae1aebf3fb226260c473f63ccc4e3cd1d85 100644 --- a/libcpu/i386_data.h +++ b/libcpu/i386_data.h @@ -1153,7 +1153,7 @@ FCT_mod$64r_m (struct output_data *d) return general_mod$r_m (d); } #else -static typeof (FCT_mod$r_m) FCT_mod$64r_m __attribute__ ((alias ("FCT_mod$r_m"))); +#define FCT_mod$64r_m FCT_mod$r_m #endif diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c index 599d16549ddc2fc3e4911fb443f4900e36fd0e82..dec62bfaacff77f9829fa549e9b90e158685c588 100644 --- a/libcpu/i386_disasm.c +++ b/libcpu/i386_disasm.c @@ -41,15 +41,12 @@ #include #include -#include "../libebl/libeblP.h" +#include "libeblP.h" #define MACHINE_ENCODING LITTLE_ENDIAN #include "memory-access.h" - -#ifndef MNEFILE -# define MNEFILE "i386.mnemonics" -#endif +#include "i386_mne.h" #define MNESTRFIELD(line) MNESTRFIELD1 (line) #define MNESTRFIELD1(line) str##line @@ -71,15 +68,6 @@ static const union mnestr_t } }; -/* The index can be stored in the instrtab. */ -enum - { -#define MNE(name) MNE_##name, -#include MNEFILE -#undef MNE - MNE_INVALID - }; - static const unsigned short int mneidx[] = { #define MNE(name) \ @@ -480,8 +468,8 @@ i386_disasm (Ebl *ebl __attribute__((unused)), /* gcc is not clever enough to see the following variables are not used uninitialized. */ - asm ("" - : "=mr" (opoff), "=mr" (correct_prefix), "=mr" (codep), + __asm ("" + : "=mr" (opoff), "=mr" (correct_prefix), "=mr" (codep), "=mr" (next_curr), "=mr" (len)); } diff --git a/libcpu/i386_lex.c b/libcpu/i386_lex.c new file mode 100644 index 0000000000000000000000000000000000000000..b7a8172a6f08f6e2f56bf349c4110babc1fee961 --- /dev/null +++ b/libcpu/i386_lex.c @@ -0,0 +1,2271 @@ + +#line 2 "i386_lex.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define yy_create_buffer i386__create_buffer +#define yy_delete_buffer i386__delete_buffer +#define yy_scan_buffer i386__scan_buffer +#define yy_scan_string i386__scan_string +#define yy_scan_bytes i386__scan_bytes +#define yy_init_buffer i386__init_buffer +#define yy_flush_buffer i386__flush_buffer +#define yy_load_buffer_state i386__load_buffer_state +#define yy_switch_to_buffer i386__switch_to_buffer +#define yypush_buffer_state i386_push_buffer_state +#define yypop_buffer_state i386_pop_buffer_state +#define yyensure_buffer_stack i386_ensure_buffer_stack +#define yy_flex_debug i386__flex_debug +#define yyin i386_in +#define yyleng i386_leng +#define yylex i386_lex +#define yylineno i386_lineno +#define yyout i386_out +#define yyrestart i386_restart +#define yytext i386_text +#define yywrap i386_wrap +#define yyalloc i386_alloc +#define yyrealloc i386_realloc +#define yyfree i386_free + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +#ifdef yy_create_buffer +#define i386__create_buffer_ALREADY_DEFINED +#else +#define yy_create_buffer i386__create_buffer +#endif + +#ifdef yy_delete_buffer +#define i386__delete_buffer_ALREADY_DEFINED +#else +#define yy_delete_buffer i386__delete_buffer +#endif + +#ifdef yy_scan_buffer +#define i386__scan_buffer_ALREADY_DEFINED +#else +#define yy_scan_buffer i386__scan_buffer +#endif + +#ifdef yy_scan_string +#define i386__scan_string_ALREADY_DEFINED +#else +#define yy_scan_string i386__scan_string +#endif + +#ifdef yy_scan_bytes +#define i386__scan_bytes_ALREADY_DEFINED +#else +#define yy_scan_bytes i386__scan_bytes +#endif + +#ifdef yy_init_buffer +#define i386__init_buffer_ALREADY_DEFINED +#else +#define yy_init_buffer i386__init_buffer +#endif + +#ifdef yy_flush_buffer +#define i386__flush_buffer_ALREADY_DEFINED +#else +#define yy_flush_buffer i386__flush_buffer +#endif + +#ifdef yy_load_buffer_state +#define i386__load_buffer_state_ALREADY_DEFINED +#else +#define yy_load_buffer_state i386__load_buffer_state +#endif + +#ifdef yy_switch_to_buffer +#define i386__switch_to_buffer_ALREADY_DEFINED +#else +#define yy_switch_to_buffer i386__switch_to_buffer +#endif + +#ifdef yypush_buffer_state +#define i386_push_buffer_state_ALREADY_DEFINED +#else +#define yypush_buffer_state i386_push_buffer_state +#endif + +#ifdef yypop_buffer_state +#define i386_pop_buffer_state_ALREADY_DEFINED +#else +#define yypop_buffer_state i386_pop_buffer_state +#endif + +#ifdef yyensure_buffer_stack +#define i386_ensure_buffer_stack_ALREADY_DEFINED +#else +#define yyensure_buffer_stack i386_ensure_buffer_stack +#endif + +#ifdef yylex +#define i386_lex_ALREADY_DEFINED +#else +#define yylex i386_lex +#endif + +#ifdef yyrestart +#define i386_restart_ALREADY_DEFINED +#else +#define yyrestart i386_restart +#endif + +#ifdef yylex_init +#define i386_lex_init_ALREADY_DEFINED +#else +#define yylex_init i386_lex_init +#endif + +#ifdef yylex_init_extra +#define i386_lex_init_extra_ALREADY_DEFINED +#else +#define yylex_init_extra i386_lex_init_extra +#endif + +#ifdef yylex_destroy +#define i386_lex_destroy_ALREADY_DEFINED +#else +#define yylex_destroy i386_lex_destroy +#endif + +#ifdef yyget_debug +#define i386_get_debug_ALREADY_DEFINED +#else +#define yyget_debug i386_get_debug +#endif + +#ifdef yyset_debug +#define i386_set_debug_ALREADY_DEFINED +#else +#define yyset_debug i386_set_debug +#endif + +#ifdef yyget_extra +#define i386_get_extra_ALREADY_DEFINED +#else +#define yyget_extra i386_get_extra +#endif + +#ifdef yyset_extra +#define i386_set_extra_ALREADY_DEFINED +#else +#define yyset_extra i386_set_extra +#endif + +#ifdef yyget_in +#define i386_get_in_ALREADY_DEFINED +#else +#define yyget_in i386_get_in +#endif + +#ifdef yyset_in +#define i386_set_in_ALREADY_DEFINED +#else +#define yyset_in i386_set_in +#endif + +#ifdef yyget_out +#define i386_get_out_ALREADY_DEFINED +#else +#define yyget_out i386_get_out +#endif + +#ifdef yyset_out +#define i386_set_out_ALREADY_DEFINED +#else +#define yyset_out i386_set_out +#endif + +#ifdef yyget_leng +#define i386_get_leng_ALREADY_DEFINED +#else +#define yyget_leng i386_get_leng +#endif + +#ifdef yyget_text +#define i386_get_text_ALREADY_DEFINED +#else +#define yyget_text i386_get_text +#endif + +#ifdef yyget_lineno +#define i386_get_lineno_ALREADY_DEFINED +#else +#define yyget_lineno i386_get_lineno +#endif + +#ifdef yyset_lineno +#define i386_set_lineno_ALREADY_DEFINED +#else +#define yyset_lineno i386_set_lineno +#endif + +#ifdef yywrap +#define i386_wrap_ALREADY_DEFINED +#else +#define yywrap i386_wrap +#endif + +#ifdef yyalloc +#define i386_alloc_ALREADY_DEFINED +#else +#define yyalloc i386_alloc +#endif + +#ifdef yyrealloc +#define i386_realloc_ALREADY_DEFINED +#else +#define yyrealloc i386_realloc +#endif + +#ifdef yyfree +#define i386_free_ALREADY_DEFINED +#else +#define yyfree i386_free +#endif + +#ifdef yytext +#define i386_text_ALREADY_DEFINED +#else +#define yytext i386_text +#endif + +#ifdef yyleng +#define i386_leng_ALREADY_DEFINED +#else +#define yyleng i386_leng +#endif + +#ifdef yyin +#define i386_in_ALREADY_DEFINED +#else +#define yyin i386_in +#endif + +#ifdef yyout +#define i386_out_ALREADY_DEFINED +#else +#define yyout i386_out +#endif + +#ifdef yy_flex_debug +#define i386__flex_debug_ALREADY_DEFINED +#else +#define yy_flex_debug i386__flex_debug +#endif + +#ifdef yylineno +#define i386_lineno_ALREADY_DEFINED +#else +#define yylineno i386_lineno +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + #define YY_LINENO_REWIND_TO(dst) \ + do {\ + const char *p;\ + for ( p = yy_cp-1; p >= (dst); --p)\ + if ( *p == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define i386_wrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 21 +#define YY_END_OF_BUFFER 22 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[62] = + { 0, + 0, 0, 0, 0, 22, 20, 17, 15, 20, 5, + 20, 14, 16, 19, 18, 15, 12, 7, 8, 13, + 11, 11, 19, 14, 16, 17, 6, 0, 0, 0, + 5, 0, 9, 18, 11, 11, 0, 0, 0, 0, + 11, 0, 0, 0, 0, 11, 1, 0, 0, 0, + 11, 0, 0, 0, 11, 2, 3, 0, 10, 4, + 0 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 4, 1, 5, 1, 1, 1, + 1, 1, 1, 6, 1, 1, 7, 8, 9, 10, + 10, 10, 10, 10, 10, 10, 10, 11, 1, 1, + 1, 1, 1, 1, 12, 13, 13, 14, 13, 13, + 13, 13, 15, 13, 13, 16, 13, 17, 13, 13, + 13, 13, 13, 13, 13, 18, 13, 13, 13, 13, + 1, 1, 1, 1, 13, 1, 19, 13, 13, 13, + + 20, 21, 13, 13, 22, 13, 23, 13, 24, 25, + 26, 27, 13, 28, 29, 13, 30, 13, 13, 31, + 32, 13, 33, 1, 34, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static const YY_CHAR yy_meta[35] = + { 0, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 3 + } ; + +static const flex_int16_t yy_base[65] = + { 0, + 0, 32, 65, 3, 113, 114, 9, 11, 19, 7, + 78, 16, 114, 114, 18, 20, 114, 114, 114, 114, + 0, 94, 76, 23, 114, 25, 114, 90, 80, 0, + 41, 73, 114, 36, 0, 88, 76, 44, 42, 37, + 49, 37, 38, 37, 31, 40, 114, 33, 32, 28, + 37, 16, 14, 12, 17, 114, 114, 5, 0, 114, + 114, 99, 101, 2 + } ; + +static const flex_int16_t yy_def[65] = + { 0, + 62, 62, 61, 3, 61, 61, 61, 61, 61, 61, + 63, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 64, 64, 63, 61, 61, 61, 61, 61, 61, 61, + 61, 63, 61, 61, 64, 64, 61, 61, 61, 61, + 64, 61, 61, 61, 61, 64, 61, 61, 61, 61, + 64, 61, 61, 61, 64, 61, 61, 61, 64, 61, + 0, 61, 61, 61 + } ; + +static const flex_int16_t yy_nxt[149] = + { 0, + 61, 7, 8, 35, 9, 24, 25, 10, 10, 10, + 26, 26, 26, 26, 31, 31, 31, 26, 26, 34, + 34, 34, 34, 27, 34, 34, 26, 26, 60, 39, + 59, 40, 11, 7, 12, 13, 9, 34, 34, 10, + 10, 10, 28, 58, 57, 29, 56, 30, 31, 31, + 31, 55, 54, 53, 52, 51, 50, 49, 48, 47, + 46, 45, 44, 43, 11, 14, 15, 16, 14, 14, + 17, 14, 18, 19, 14, 20, 21, 21, 21, 22, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 23, 14, 6, + + 6, 6, 32, 32, 42, 41, 33, 38, 37, 33, + 36, 33, 61, 5, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61 + } ; + +static const flex_int16_t yy_chk[149] = + { 0, + 0, 1, 1, 64, 1, 4, 4, 1, 1, 1, + 7, 7, 8, 8, 10, 10, 10, 12, 12, 15, + 15, 16, 16, 9, 24, 24, 26, 26, 58, 30, + 55, 30, 1, 2, 2, 2, 2, 34, 34, 2, + 2, 2, 9, 54, 53, 9, 52, 9, 31, 31, + 31, 51, 50, 49, 48, 46, 45, 44, 43, 42, + 41, 40, 39, 38, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 62, + + 62, 62, 63, 63, 37, 36, 32, 29, 28, 23, + 22, 11, 5, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61 + } ; + +/* Table of booleans, true if rule could match eol. */ +static const flex_int32_t yy_rule_can_match_eol[22] = + { 0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, + 0, 0, }; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "i386_lex.l" +#line 2 "i386_lex.l" +/* Copyright (C) 2004, 2005, 2007, 2008 Red Hat, Inc. + Written by Ulrich Drepper , 2004. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include +#include "system.h" +#include "i386_parse.h" + + +static void eat_to_eol (void); +static void invalid_char (int ch); +#line 819 "i386_lex.c" + +#line 821 "i386_lex.c" + +#define INITIAL 0 +#define MAIN 1 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + int n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + if ( yyleng > 0 ) \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ + (yytext[yyleng - 1] == '\n'); \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { +#line 56 "i386_lex.l" + + +#line 1045 "i386_lex.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); + yy_current_state += YY_AT_BOL(); +yy_match: + do + { + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 62 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } + while ( yy_current_state != 61 ); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + yylineno++; +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 58 "i386_lex.l" +{ return kMASK; } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 60 "i386_lex.l" +{ return kPREFIX; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 61 "i386_lex.l" +{ return kSUFFIX; } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 63 "i386_lex.l" +{ return kSYNONYM; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 65 "i386_lex.l" +{ i386_lval.num = strtoul (yytext, NULL, 10); + return kNUMBER; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 68 "i386_lex.l" +{ BEGIN (MAIN); return kPERCPERC; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 71 "i386_lex.l" +{ return '0'; } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 72 "i386_lex.l" +{ return '1'; } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 74 "i386_lex.l" +{ i386_lval.str = xstrndup (yytext + 1, + yyleng - 2); + return kBITFIELD; } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 78 "i386_lex.l" +{ i386_lval.str = (void *) -1l; + return kID; } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 81 "i386_lex.l" +{ i386_lval.str = xstrndup (yytext, yyleng); + return kID; } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 84 "i386_lex.l" +{ return ','; } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 86 "i386_lex.l" +{ return ':'; } + YY_BREAK +case 14: +/* rule 14 can match eol */ +YY_RULE_SETUP +#line 88 "i386_lex.l" +{ /* IGNORE */ } + YY_BREAK +case 15: +/* rule 15 can match eol */ +YY_RULE_SETUP +#line 90 "i386_lex.l" +{ return '\n'; } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 92 "i386_lex.l" +{ eat_to_eol (); } + YY_BREAK +case 17: +/* rule 17 can match eol */ +YY_RULE_SETUP +#line 94 "i386_lex.l" +{ /* IGNORE */ } + YY_BREAK +case 18: +/* rule 18 can match eol */ +YY_RULE_SETUP +#line 96 "i386_lex.l" +{ return kSPACE; } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 98 "i386_lex.l" +{ i386_lval.ch = *yytext; return kCHAR; } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 100 "i386_lex.l" +{ invalid_char (*yytext); } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 103 "i386_lex.l" +ECHO; + YY_BREAK +#line 1223 "i386_lex.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(MAIN): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + yy_current_state += YY_AT_BOL(); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 62 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); + + YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 62 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 61); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + if ( c == '\n' ){ + --yylineno; + } + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); + if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol ) + + yylineno++; +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + /* We do not touch yylineno unless the option is enabled. */ + yylineno = 1; + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 103 "i386_lex.l" + + +static void +eat_to_eol (void) +{ + while (1) + { + int c = input (); + + if (c == EOF || c == '\n') + break; + } +} + +static void +invalid_char (int ch) +{ + error (0, 0, (isascii (ch) + ? _("invalid character '%c' at line %d; ignored") + : _("invalid character '\\%o' at line %d; ignored")), + ch, yylineno); +} + +// Local Variables: +// mode: C +// End: + diff --git a/libcpu/i386_mne.h b/libcpu/i386_mne.h new file mode 100644 index 0000000000000000000000000000000000000000..d51575153e896deab6fd823d2301a96abe9070b8 --- /dev/null +++ b/libcpu/i386_mne.h @@ -0,0 +1,46 @@ +/* Disassembler for x86, MNE enums. + Copyright (C) 2007, 2008, 2009, 2011 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 . */ + +#ifndef _I386_MNE_H +#define _I386_MNE_H 1 + +#ifndef MNEFILE +# define MNEFILE "i386.mnemonics" +#endif + +/* The index can be stored in the instrtab. */ +enum + { +#define MNE(name) MNE_##name, +#include MNEFILE +#undef MNE + MNE_INVALID, + MNE_COUNT = MNE_INVALID, + }; + +#endif /* i386_mne.h */ diff --git a/libcpu/i386_parse.c b/libcpu/i386_parse.c new file mode 100644 index 0000000000000000000000000000000000000000..310d070a00d0a9d3a6fccd33578b3af36e120f82 --- /dev/null +++ b/libcpu/i386_parse.c @@ -0,0 +1,3106 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program 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. + + This program 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 . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 + +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + +/* Substitute the variable and function names. */ +#define yyparse i386_parse +#define yylex i386_lex +#define yyerror i386_error +#define yydebug i386_debug +#define yynerrs i386_nerrs +#define yylval i386_lval +#define yychar i386_char + +/* First part of user prologue. */ +#line 1 "i386_parse.y" + +/* Parser for i386 CPU description. + Copyright (C) 2004, 2005, 2007, 2008, 2009 Red Hat, Inc. + Written by Ulrich Drepper , 2004. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see . */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "i386_mne.h" + +#define obstack_chunk_alloc xmalloc +#define obstack_chunk_free free + +/* The error handler. */ +static void yyerror (const char *s); + +extern int yylex (void); +extern int i386_lineno; +extern char *infname; + + +struct known_bitfield +{ + char *name; + unsigned long int bits; + int tmp; +}; + + +struct bitvalue +{ + enum bittype { zeroone, field, failure } type; + union + { + unsigned int value; + struct known_bitfield *field; + }; + struct bitvalue *next; +}; + + +struct argname +{ + enum nametype { string, nfield } type; + union + { + char *str; + struct known_bitfield *field; + }; + struct argname *next; +}; + + +struct argument +{ + struct argname *name; + struct argument *next; +}; + + +struct instruction +{ + /* The byte encoding. */ + struct bitvalue *bytes; + + /* Prefix possible. */ + int repe; + int rep; + + /* Mnemonic. */ + char *mnemonic; + + /* Suffix. */ + enum { suffix_none = 0, suffix_w, suffix_w0, suffix_W, suffix_tttn, + suffix_w1, suffix_W1, suffix_D } suffix; + + /* Flag set if modr/m is used. */ + int modrm; + + /* Operands. */ + struct operand + { + char *fct; + char *str; + int off1; + int off2; + int off3; + } operands[3]; + + struct instruction *next; +}; + + +struct synonym +{ + char *from; + char *to; +}; + + +struct suffix +{ + char *name; + int idx; +}; + + +struct argstring +{ + char *str; + int idx; + int off; +}; + + +static struct known_bitfield ax_reg = + { + .name = "ax", .bits = 0, .tmp = 0 + }; + +static struct known_bitfield dx_reg = + { + .name = "dx", .bits = 0, .tmp = 0 + }; + +static struct known_bitfield di_reg = + { + .name = "es_di", .bits = 0, .tmp = 0 + }; + +static struct known_bitfield si_reg = + { + .name = "ds_si", .bits = 0, .tmp = 0 + }; + +static struct known_bitfield bx_reg = + { + .name = "ds_bx", .bits = 0, .tmp = 0 + }; + + +static int bitfield_compare (const void *p1, const void *p2); +static void new_bitfield (char *name, unsigned long int num); +static void check_bits (struct bitvalue *value); +static int check_duplicates (struct bitvalue *val); +static int check_argsdef (struct bitvalue *bitval, struct argument *args); +static int check_bitsused (struct bitvalue *bitval, + struct known_bitfield *suffix, + struct argument *args); +static struct argname *combine (struct argname *name); +static void fillin_arg (struct bitvalue *bytes, struct argname *name, + struct instruction *instr, int n); +static void find_numbers (void); +static int compare_syn (const void *p1, const void *p2); +static int compare_suf (const void *p1, const void *p2); +static void instrtable_out (void); +#if 0 +static void create_mnemonic_table (void); +#endif + +static void *bitfields; +static struct instruction *instructions; +static size_t ninstructions; +static void *synonyms; +static void *suffixes; +static int nsuffixes; +static void *mnemonics; +size_t nmnemonics; +extern FILE *outfile; + +/* Number of bits used mnemonics. */ +#if 0 +static size_t best_mnemonic_bits; +#endif + +#line 294 "i386_parse.c" + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif + +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_I386_I_PARSE_H_INCLUDED +# define YY_I386_I_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int i386_debug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + kMASK = 258, /* kMASK */ + kPREFIX = 259, /* kPREFIX */ + kSUFFIX = 260, /* kSUFFIX */ + kSYNONYM = 261, /* kSYNONYM */ + kID = 262, /* kID */ + kNUMBER = 263, /* kNUMBER */ + kPERCPERC = 264, /* kPERCPERC */ + kBITFIELD = 265, /* kBITFIELD */ + kCHAR = 266, /* kCHAR */ + kSPACE = 267 /* kSPACE */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEMPTY -2 +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define kMASK 258 +#define kPREFIX 259 +#define kSUFFIX 260 +#define kSYNONYM 261 +#define kID 262 +#define kNUMBER 263 +#define kPERCPERC 264 +#define kBITFIELD 265 +#define kCHAR 266 +#define kSPACE 267 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 217 "i386_parse.y" + + unsigned long int num; + char *str; + char ch; + struct known_bitfield *field; + struct bitvalue *bit; + struct argname *name; + struct argument *arg; + +#line 381 "i386_parse.c" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE i386_lval; + + +int i386_parse (void); + + +#endif /* !YY_I386_I_PARSE_H_INCLUDED */ +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_kMASK = 3, /* kMASK */ + YYSYMBOL_kPREFIX = 4, /* kPREFIX */ + YYSYMBOL_kSUFFIX = 5, /* kSUFFIX */ + YYSYMBOL_kSYNONYM = 6, /* kSYNONYM */ + YYSYMBOL_kID = 7, /* kID */ + YYSYMBOL_kNUMBER = 8, /* kNUMBER */ + YYSYMBOL_kPERCPERC = 9, /* kPERCPERC */ + YYSYMBOL_kBITFIELD = 10, /* kBITFIELD */ + YYSYMBOL_kCHAR = 11, /* kCHAR */ + YYSYMBOL_kSPACE = 12, /* kSPACE */ + YYSYMBOL_13_n_ = 13, /* '\n' */ + YYSYMBOL_14_ = 14, /* ':' */ + YYSYMBOL_15_ = 15, /* ',' */ + YYSYMBOL_16_0_ = 16, /* '0' */ + YYSYMBOL_17_1_ = 17, /* '1' */ + YYSYMBOL_YYACCEPT = 18, /* $accept */ + YYSYMBOL_spec = 19, /* spec */ + YYSYMBOL_masks = 20, /* masks */ + YYSYMBOL_mask = 21, /* mask */ + YYSYMBOL_instrs = 22, /* instrs */ + YYSYMBOL_instr = 23, /* instr */ + YYSYMBOL_bitfieldopt = 24, /* bitfieldopt */ + YYSYMBOL_bytes = 25, /* bytes */ + YYSYMBOL_byte = 26, /* byte */ + YYSYMBOL_bit = 27, /* bit */ + YYSYMBOL_optargs = 28, /* optargs */ + YYSYMBOL_args = 29, /* args */ + YYSYMBOL_arg = 30, /* arg */ + YYSYMBOL_argcomp = 31 /* argcomp */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + +#ifdef short +# undef short +#endif + +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif + +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned +# endif +#endif + +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YY_USE(E) ((void) (E)) +#else +# define YY_USE(E) /* empty */ +#endif + +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* !defined yyoverflow */ + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 12 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 37 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 18 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 14 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 32 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 49 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 267 + + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 15, 2, 2, 2, 16, 17, + 2, 2, 2, 2, 2, 2, 2, 2, 14, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12 +}; + +#if YYDEBUG +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = +{ + 0, 247, 247, 257, 258, 261, 263, 265, 267, 279, + 282, 283, 286, 369, 372, 388, 391, 401, 408, 416, + 420, 427, 434, 456, 459, 462, 472, 480, 488, 491, + 523, 532, 539 +}; +#endif + +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"end of file\"", "error", "\"invalid token\"", "kMASK", "kPREFIX", + "kSUFFIX", "kSYNONYM", "kID", "kNUMBER", "kPERCPERC", "kBITFIELD", + "kCHAR", "kSPACE", "'\\n'", "':'", "','", "'0'", "'1'", "$accept", + "spec", "masks", "mask", "instrs", "instr", "bitfieldopt", "bytes", + "byte", "bit", "optargs", "args", "arg", "argcomp", YY_NULLPTR +}; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} +#endif + +#define YYPACT_NINF (-35) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-1) + +#define yytable_value_is_error(Yyn) \ + 0 + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int8 yypact[] = +{ + 12, 9, 10, 11, 13, 22, -2, -35, 16, -35, + -35, 15, -35, 14, 12, -35, -35, -4, -35, -35, + -35, -35, 17, -35, -12, -4, -35, -4, 18, -4, + -35, -35, -35, 19, -4, 18, 20, -6, -35, -35, + -35, -35, -35, 21, -6, -35, -6, -35, -6 +}; + +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int8 yydefact[] = +{ + 9, 0, 0, 0, 0, 0, 0, 4, 0, 6, + 7, 0, 1, 0, 9, 5, 8, 13, 3, 22, + 20, 21, 2, 11, 0, 17, 19, 13, 15, 0, + 18, 10, 14, 0, 16, 15, 24, 0, 12, 31, + 29, 30, 32, 23, 26, 28, 0, 27, 25 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -35, -35, -35, 23, -35, 2, -1, -35, 4, -25, + -35, -35, -15, -34 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + 0, 5, 6, 7, 22, 23, 33, 24, 25, 26, + 38, 43, 44, 45 +}; + +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int8 yytable[] = +{ + 30, 39, 28, 29, 40, 41, 19, 13, 42, 30, + 47, 14, 20, 21, 47, 1, 2, 3, 4, 8, + 9, 10, 12, 11, 15, 16, 35, 17, 32, 31, + 27, 48, 37, 34, 36, 0, 46, 18 +}; + +static const yytype_int8 yycheck[] = +{ + 25, 7, 14, 15, 10, 11, 10, 9, 14, 34, + 44, 13, 16, 17, 48, 3, 4, 5, 6, 10, + 10, 10, 0, 10, 8, 10, 7, 13, 10, 27, + 13, 46, 12, 29, 35, -1, 15, 14 +}; + +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = +{ + 0, 3, 4, 5, 6, 19, 20, 21, 10, 10, + 10, 10, 0, 9, 13, 8, 10, 13, 21, 10, + 16, 17, 22, 23, 25, 26, 27, 13, 14, 15, + 27, 23, 10, 24, 26, 7, 24, 12, 28, 7, + 10, 11, 14, 29, 30, 31, 15, 31, 30 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = +{ + 0, 18, 19, 20, 20, 21, 21, 21, 21, 21, + 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, + 27, 27, 27, 28, 28, 29, 29, 30, 30, 31, + 31, 31, 31 +}; + +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 4, 3, 1, 3, 2, 2, 3, 0, + 3, 1, 6, 0, 1, 0, 3, 1, 2, 1, + 1, 1, 1, 2, 0, 3, 1, 2, 1, 1, + 1, 1, 1 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + FILE *yyoutput = yyo; + YY_USE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + + + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +{ + YY_USE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/* Lookahead token kind. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; + + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; + + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yychar = YYEMPTY; /* Cause a token to be read. */ + + goto yysetstate; + + +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + YYNOMEM; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: /* spec: masks kPERCPERC '\n' instrs */ +#line 248 "i386_parse.y" + { + if (error_message_count != 0) + error (EXIT_FAILURE, 0, + "terminated due to previous error"); + + instrtable_out (); + } +#line 1416 "i386_parse.c" + break; + + case 5: /* mask: kMASK kBITFIELD kNUMBER */ +#line 262 "i386_parse.y" + { new_bitfield ((yyvsp[-1].str), (yyvsp[0].num)); } +#line 1422 "i386_parse.c" + break; + + case 6: /* mask: kPREFIX kBITFIELD */ +#line 264 "i386_parse.y" + { new_bitfield ((yyvsp[0].str), -1); } +#line 1428 "i386_parse.c" + break; + + case 7: /* mask: kSUFFIX kBITFIELD */ +#line 266 "i386_parse.y" + { new_bitfield ((yyvsp[0].str), -2); } +#line 1434 "i386_parse.c" + break; + + case 8: /* mask: kSYNONYM kBITFIELD kBITFIELD */ +#line 268 "i386_parse.y" + { + struct synonym *newp = xmalloc (sizeof (*newp)); + newp->from = (yyvsp[-1].str); + newp->to = (yyvsp[0].str); + if (tfind (newp, &synonyms, compare_syn) != NULL) + error (0, 0, + "%d: duplicate definition for synonym '%s'", + i386_lineno, (yyvsp[-1].str)); + else if (tsearch ( newp, &synonyms, compare_syn) == NULL) + error (EXIT_FAILURE, 0, "tsearch"); + } +#line 1450 "i386_parse.c" + break; + + case 12: /* instr: bytes ':' bitfieldopt kID bitfieldopt optargs */ +#line 287 "i386_parse.y" + { + if ((yyvsp[-3].field) != NULL && strcmp ((yyvsp[-3].field)->name, "RE") != 0 + && strcmp ((yyvsp[-3].field)->name, "R") != 0) + { + error (0, 0, "%d: only 'R' and 'RE' prefix allowed", + i386_lineno - 1); + } + if (check_duplicates ((yyvsp[-5].bit)) == 0 + && check_argsdef ((yyvsp[-5].bit), (yyvsp[0].arg)) == 0 + && check_bitsused ((yyvsp[-5].bit), (yyvsp[-1].field), (yyvsp[0].arg)) == 0) + { + struct instruction *newp = xcalloc (sizeof (*newp), + 1); + if ((yyvsp[-3].field) != NULL) + { + if (strcmp ((yyvsp[-3].field)->name, "RE") == 0) + newp->repe = 1; + else if (strcmp ((yyvsp[-3].field)->name, "R") == 0) + newp->rep = 1; + } + + newp->bytes = (yyvsp[-5].bit); + newp->mnemonic = (yyvsp[-2].str); + if (newp->mnemonic != (void *) -1l + && tfind ((yyvsp[-2].str), &mnemonics, + (int (*)(const void *, const void *)) strcmp) == NULL) + { + if (tsearch ((yyvsp[-2].str), &mnemonics, + (int (*)(const void *, const void *)) strcmp) == NULL) + error (EXIT_FAILURE, errno, "tsearch"); + ++nmnemonics; + } + + if ((yyvsp[-1].field) != NULL) + { + if (strcmp ((yyvsp[-1].field)->name, "w") == 0) + newp->suffix = suffix_w; + else if (strcmp ((yyvsp[-1].field)->name, "w0") == 0) + newp->suffix = suffix_w0; + else if (strcmp ((yyvsp[-1].field)->name, "tttn") == 0) + newp->suffix = suffix_tttn; + else if (strcmp ((yyvsp[-1].field)->name, "w1") == 0) + newp->suffix = suffix_w1; + else if (strcmp ((yyvsp[-1].field)->name, "W") == 0) + newp->suffix = suffix_W; + else if (strcmp ((yyvsp[-1].field)->name, "W1") == 0) + newp->suffix = suffix_W1; + else if (strcmp ((yyvsp[-1].field)->name, "D") == 0) + newp->suffix = suffix_D; + else + error (EXIT_FAILURE, 0, + "%s: %d: unknown suffix '%s'", + infname, i386_lineno - 1, (yyvsp[-1].field)->name); + + struct suffix search = { .name = (yyvsp[-1].field)->name }; + if (tfind (&search, &suffixes, compare_suf) + == NULL) + { + struct suffix *ns = xmalloc (sizeof (*ns)); + ns->name = (yyvsp[-1].field)->name; + ns->idx = ++nsuffixes; + if (tsearch (ns, &suffixes, compare_suf) + == NULL) + error (EXIT_FAILURE, errno, "tsearch"); + } + } + + struct argument *args = (yyvsp[0].arg); + int n = 0; + while (args != NULL) + { + fillin_arg ((yyvsp[-5].bit), args->name, newp, n); + + args = args->next; + ++n; + } + + newp->next = instructions; + instructions = newp; + ++ninstructions; + } + } +#line 1537 "i386_parse.c" + break; + + case 14: /* bitfieldopt: kBITFIELD */ +#line 373 "i386_parse.y" + { + struct known_bitfield search; + search.name = (yyvsp[0].str); + struct known_bitfield **res; + res = tfind (&search, &bitfields, bitfield_compare); + if (res == NULL) + { + error (0, 0, "%d: unknown bitfield '%s'", + i386_lineno, search.name); + (yyval.field) = NULL; + } + else + (yyval.field) = *res; + } +#line 1556 "i386_parse.c" + break; + + case 15: /* bitfieldopt: %empty */ +#line 388 "i386_parse.y" + { (yyval.field) = NULL; } +#line 1562 "i386_parse.c" + break; + + case 16: /* bytes: bytes ',' byte */ +#line 392 "i386_parse.y" + { + check_bits ((yyvsp[0].bit)); + + struct bitvalue *runp = (yyvsp[-2].bit); + while (runp->next != NULL) + runp = runp->next; + runp->next = (yyvsp[0].bit); + (yyval.bit) = (yyvsp[-2].bit); + } +#line 1576 "i386_parse.c" + break; + + case 17: /* bytes: byte */ +#line 402 "i386_parse.y" + { + check_bits ((yyvsp[0].bit)); + (yyval.bit) = (yyvsp[0].bit); + } +#line 1585 "i386_parse.c" + break; + + case 18: /* byte: byte bit */ +#line 409 "i386_parse.y" + { + struct bitvalue *runp = (yyvsp[-1].bit); + while (runp->next != NULL) + runp = runp->next; + runp->next = (yyvsp[0].bit); + (yyval.bit) = (yyvsp[-1].bit); + } +#line 1597 "i386_parse.c" + break; + + case 19: /* byte: bit */ +#line 417 "i386_parse.y" + { (yyval.bit) = (yyvsp[0].bit); } +#line 1603 "i386_parse.c" + break; + + case 20: /* bit: '0' */ +#line 421 "i386_parse.y" + { + (yyval.bit) = xmalloc (sizeof (struct bitvalue)); + (yyval.bit)->type = zeroone; + (yyval.bit)->value = 0; + (yyval.bit)->next = NULL; + } +#line 1614 "i386_parse.c" + break; + + case 21: /* bit: '1' */ +#line 428 "i386_parse.y" + { + (yyval.bit) = xmalloc (sizeof (struct bitvalue)); + (yyval.bit)->type = zeroone; + (yyval.bit)->value = 1; + (yyval.bit)->next = NULL; + } +#line 1625 "i386_parse.c" + break; + + case 22: /* bit: kBITFIELD */ +#line 435 "i386_parse.y" + { + (yyval.bit) = xmalloc (sizeof (struct bitvalue)); + struct known_bitfield search; + search.name = (yyvsp[0].str); + struct known_bitfield **res; + res = tfind (&search, &bitfields, bitfield_compare); + if (res == NULL) + { + error (0, 0, "%d: unknown bitfield '%s'", + i386_lineno, search.name); + (yyval.bit)->type = failure; + } + else + { + (yyval.bit)->type = field; + (yyval.bit)->field = *res; + } + (yyval.bit)->next = NULL; + } +#line 1649 "i386_parse.c" + break; + + case 23: /* optargs: kSPACE args */ +#line 457 "i386_parse.y" + { (yyval.arg) = (yyvsp[0].arg); } +#line 1655 "i386_parse.c" + break; + + case 24: /* optargs: %empty */ +#line 459 "i386_parse.y" + { (yyval.arg) = NULL; } +#line 1661 "i386_parse.c" + break; + + case 25: /* args: args ',' arg */ +#line 463 "i386_parse.y" + { + struct argument *runp = (yyvsp[-2].arg); + while (runp->next != NULL) + runp = runp->next; + runp->next = xmalloc (sizeof (struct argument)); + runp->next->name = combine ((yyvsp[0].name)); + runp->next->next = NULL; + (yyval.arg) = (yyvsp[-2].arg); + } +#line 1675 "i386_parse.c" + break; + + case 26: /* args: arg */ +#line 473 "i386_parse.y" + { + (yyval.arg) = xmalloc (sizeof (struct argument)); + (yyval.arg)->name = combine ((yyvsp[0].name)); + (yyval.arg)->next = NULL; + } +#line 1685 "i386_parse.c" + break; + + case 27: /* arg: arg argcomp */ +#line 481 "i386_parse.y" + { + struct argname *runp = (yyvsp[-1].name); + while (runp->next != NULL) + runp = runp->next; + runp->next = (yyvsp[0].name); + (yyval.name) = (yyvsp[-1].name); + } +#line 1697 "i386_parse.c" + break; + + case 28: /* arg: argcomp */ +#line 489 "i386_parse.y" + { (yyval.name) = (yyvsp[0].name); } +#line 1703 "i386_parse.c" + break; + + case 29: /* argcomp: kBITFIELD */ +#line 492 "i386_parse.y" + { + (yyval.name) = xmalloc (sizeof (struct argname)); + (yyval.name)->type = nfield; + (yyval.name)->next = NULL; + + struct known_bitfield search; + search.name = (yyvsp[0].str); + struct known_bitfield **res; + res = tfind (&search, &bitfields, bitfield_compare); + if (res == NULL) + { + if (strcmp ((yyvsp[0].str), "ax") == 0) + (yyval.name)->field = &ax_reg; + else if (strcmp ((yyvsp[0].str), "dx") == 0) + (yyval.name)->field = &dx_reg; + else if (strcmp ((yyvsp[0].str), "es_di") == 0) + (yyval.name)->field = &di_reg; + else if (strcmp ((yyvsp[0].str), "ds_si") == 0) + (yyval.name)->field = &si_reg; + else if (strcmp ((yyvsp[0].str), "ds_bx") == 0) + (yyval.name)->field = &bx_reg; + else + { + error (0, 0, "%d: unknown bitfield '%s'", + i386_lineno, search.name); + (yyval.name)->field = NULL; + } + } + else + (yyval.name)->field = *res; + } +#line 1739 "i386_parse.c" + break; + + case 30: /* argcomp: kCHAR */ +#line 524 "i386_parse.y" + { + (yyval.name) = xmalloc (sizeof (struct argname)); + (yyval.name)->type = string; + (yyval.name)->next = NULL; + (yyval.name)->str = xmalloc (2); + (yyval.name)->str[0] = (yyvsp[0].ch); + (yyval.name)->str[1] = '\0'; + } +#line 1752 "i386_parse.c" + break; + + case 31: /* argcomp: kID */ +#line 533 "i386_parse.y" + { + (yyval.name) = xmalloc (sizeof (struct argname)); + (yyval.name)->type = string; + (yyval.name)->next = NULL; + (yyval.name)->str = (yyvsp[0].str); + } +#line 1763 "i386_parse.c" + break; + + case 32: /* argcomp: ':' */ +#line 540 "i386_parse.y" + { + (yyval.name) = xmalloc (sizeof (struct argname)); + (yyval.name)->type = string; + (yyval.name)->next = NULL; + (yyval.name)->str = xmalloc (2); + (yyval.name)->str[0] = ':'; + (yyval.name)->str[1] = '\0'; + } +#line 1776 "i386_parse.c" + break; + + +#line 1780 "i386_parse.c" + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + yyerror (YY_("syntax error")); + } + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + /* Pop stack until we find a state that shifts the error token. */ + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + YY_ACCESSING_SYMBOL (yystate), yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturnlab; + + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturnlab; + + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + goto yyreturnlab; + + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + + return yyresult; +} + +#line 550 "i386_parse.y" + + +static void +yyerror (const char *s) +{ + error (0, 0, _("while reading i386 CPU description: %s at line %d"), + _(s), i386_lineno); +} + + +static int +bitfield_compare (const void *p1, const void *p2) +{ + struct known_bitfield *f1 = (struct known_bitfield *) p1; + struct known_bitfield *f2 = (struct known_bitfield *) p2; + + return strcmp (f1->name, f2->name); +} + + +static void +new_bitfield (char *name, unsigned long int num) +{ + struct known_bitfield *newp = xmalloc (sizeof (struct known_bitfield)); + newp->name = name; + newp->bits = num; + newp->tmp = 0; + + if (tfind (newp, &bitfields, bitfield_compare) != NULL) + { + error (0, 0, "%d: duplicated definition of bitfield '%s'", + i386_lineno, name); + free (name); + free (newp); + return; + } + + if (tsearch (newp, &bitfields, bitfield_compare) == NULL) + error (EXIT_FAILURE, errno, "%d: cannot insert new bitfield '%s'", + i386_lineno, name); +} + + +/* Check that the number of bits is a multiple of 8. */ +static void +check_bits (struct bitvalue *val) +{ + struct bitvalue *runp = val; + unsigned int total = 0; + + while (runp != NULL) + { + if (runp->type == zeroone) + ++total; + else if (runp->field == NULL) + /* No sense doing anything, the field is not known. */ + return; + else + total += runp->field->bits; + + runp = runp->next; + } + + if (total % 8 != 0) + { + struct obstack os; + obstack_init (&os); + + while (val != NULL) + { + if (val->type == zeroone) + obstack_printf (&os, "%u", val->value); + else + obstack_printf (&os, "{%s}", val->field->name); + val = val->next; + } + obstack_1grow (&os, '\0'); + + error (0, 0, "%d: field '%s' not a multiple of 8 bits in size", + i386_lineno, (char *) obstack_finish (&os)); + + obstack_free (&os, NULL); + } +} + + +static int +check_duplicates (struct bitvalue *val) +{ + static int testcnt; + ++testcnt; + + int result = 0; + while (val != NULL) + { + if (val->type == field && val->field != NULL) + { + if (val->field->tmp == testcnt) + { + error (0, 0, "%d: bitfield '%s' used more than once", + i386_lineno - 1, val->field->name); + result = 1; + } + val->field->tmp = testcnt; + } + + val = val->next; + } + + return result; +} + + +static int +check_argsdef (struct bitvalue *bitval, struct argument *args) +{ + int result = 0; + + while (args != NULL) + { + for (struct argname *name = args->name; name != NULL; name = name->next) + if (name->type == nfield && name->field != NULL + && name->field != &ax_reg && name->field != &dx_reg + && name->field != &di_reg && name->field != &si_reg + && name->field != &bx_reg) + { + struct bitvalue *runp = bitval; + + while (runp != NULL) + if (runp->type == field && runp->field == name->field) + break; + else + runp = runp->next; + + if (runp == NULL) + { + error (0, 0, "%d: unknown bitfield '%s' used in output format", + i386_lineno - 1, name->field->name); + result = 1; + } + } + + args = args->next; + } + + return result; +} + + +static int +check_bitsused (struct bitvalue *bitval, struct known_bitfield *suffix, + struct argument *args) +{ + int result = 0; + + while (bitval != NULL) + { + if (bitval->type == field && bitval->field != NULL + && bitval->field != suffix + /* {w} is handled special. */ + && strcmp (bitval->field->name, "w") != 0) + { + struct argument *runp; + for (runp = args; runp != NULL; runp = runp->next) + { + struct argname *name = runp->name; + + while (name != NULL) + if (name->type == nfield && name->field == bitval->field) + break; + else + name = name->next; + + if (name != NULL) + break; + } + +#if 0 + if (runp == NULL) + { + error (0, 0, "%d: bitfield '%s' not used", + i386_lineno - 1, bitval->field->name); + result = 1; + } +#endif + } + + bitval = bitval->next; + } + + return result; +} + + +static struct argname * +combine (struct argname *name) +{ + struct argname *last_str = NULL; + for (struct argname *runp = name; runp != NULL; runp = runp->next) + { + if (runp->type == string) + { + if (last_str == NULL) + last_str = runp; + else + { + last_str->str = xrealloc (last_str->str, + strlen (last_str->str) + + strlen (runp->str) + 1); + strcat (last_str->str, runp->str); + last_str->next = runp->next; + } + } + else + last_str = NULL; + } + return name; +} + + +#define obstack_grow_str(ob, str) obstack_grow (ob, str, strlen (str)) + + +static void +fillin_arg (struct bitvalue *bytes, struct argname *name, + struct instruction *instr, int n) +{ + static struct obstack ob; + static int initialized; + if (! initialized) + { + initialized = 1; + obstack_init (&ob); + } + + struct argname *runp = name; + int cnt = 0; + while (runp != NULL) + { + /* We ignore strings in the function name. */ + if (runp->type == string) + { + if (instr->operands[n].str != NULL) + error (EXIT_FAILURE, 0, + "%d: cannot have more than one string parameter", + i386_lineno - 1); + + instr->operands[n].str = runp->str; + } + else + { + assert (runp->type == nfield); + + /* Construct the function name. */ + if (cnt++ > 0) + obstack_1grow (&ob, '$'); + + if (runp->field == NULL) + /* Add some string which contains invalid characters. */ + obstack_grow_str (&ob, "!!!INVALID!!!"); + else + { + char *fieldname = runp->field->name; + + struct synonym search = { .from = fieldname }; + + struct synonym **res = tfind (&search, &synonyms, compare_syn); + if (res != NULL) + fieldname = (*res)->to; + + obstack_grow_str (&ob, fieldname); + } + + /* Now compute the bit offset of the field. */ + struct bitvalue *b = bytes; + int bitoff = 0; + if (runp->field != NULL) + while (b != NULL) + { + if (b->type == field && b->field != NULL) + { + if (strcmp (b->field->name, runp->field->name) == 0) + break; + bitoff += b->field->bits; + } + else + ++bitoff; + + b = b->next; + } + if (instr->operands[n].off1 == 0) + instr->operands[n].off1 = bitoff; + else if (instr->operands[n].off2 == 0) + instr->operands[n].off2 = bitoff; + else if (instr->operands[n].off3 == 0) + instr->operands[n].off3 = bitoff; + else + error (EXIT_FAILURE, 0, + "%d: cannot have more than three fields in parameter", + i386_lineno - 1); + + if (runp->field != NULL + && strncasecmp (runp->field->name, "mod", 3) == 0) + instr->modrm = 1; + } + + runp = runp->next; + } + if (obstack_object_size (&ob) == 0) + obstack_grow_str (&ob, "string"); + obstack_1grow (&ob, '\0'); + char *fct = obstack_finish (&ob); + + instr->operands[n].fct = fct; +} + + +#if 0 +static void +nameout (const void *nodep, VISIT value, int level) +{ + if (value == leaf || value == postorder) + printf (" %s\n", *(const char **) nodep); +} +#endif + + +static int +compare_argstring (const void *p1, const void *p2) +{ + const struct argstring *a1 = (const struct argstring *) p1; + const struct argstring *a2 = (const struct argstring *) p2; + + return strcmp (a1->str, a2->str); +} + + +static int maxoff[3][3]; +static int minoff[3][3] = { { 1000, 1000, 1000 }, + { 1000, 1000, 1000 }, + { 1000, 1000, 1000 } }; +static int nbitoff[3][3]; +static void *fct_names[3]; +static int nbitfct[3]; +static int nbitsuf; +static void *strs[3]; +static int nbitstr[3]; +static int total_bits = 2; // Already counted the rep/repe bits. + +static void +find_numbers (void) +{ + int nfct_names[3] = { 0, 0, 0 }; + int nstrs[3] = { 0, 0, 0 }; + + /* We reverse the order of the instruction list while processing it. + Later phases need it in the order in which the input file has + them. */ + struct instruction *reversed = NULL; + + struct instruction *runp = instructions; + while (runp != NULL) + { + for (int i = 0; i < 3; ++i) + if (runp->operands[i].fct != NULL) + { + struct argstring search = { .str = runp->operands[i].fct }; + if (tfind (&search, &fct_names[i], compare_argstring) == NULL) + { + struct argstring *newp = xmalloc (sizeof (*newp)); + newp->str = runp->operands[i].fct; + newp->idx = 0; + if (tsearch (newp, &fct_names[i], compare_argstring) == NULL) + error (EXIT_FAILURE, errno, "tsearch"); + ++nfct_names[i]; + } + + if (runp->operands[i].str != NULL) + { + search.str = runp->operands[i].str; + if (tfind (&search, &strs[i], compare_argstring) == NULL) + { + struct argstring *newp = xmalloc (sizeof (*newp)); + newp->str = runp->operands[i].str; + newp->idx = 0; + if (tsearch (newp, &strs[i], compare_argstring) == NULL) + error (EXIT_FAILURE, errno, "tsearch"); + ++nstrs[i]; + } + } + + maxoff[i][0] = MAX (maxoff[i][0], runp->operands[i].off1); + maxoff[i][1] = MAX (maxoff[i][1], runp->operands[i].off2); + maxoff[i][2] = MAX (maxoff[i][2], runp->operands[i].off3); + + if (runp->operands[i].off1 > 0) + minoff[i][0] = MIN (minoff[i][0], runp->operands[i].off1); + if (runp->operands[i].off2 > 0) + minoff[i][1] = MIN (minoff[i][1], runp->operands[i].off2); + if (runp->operands[i].off3 > 0) + minoff[i][2] = MIN (minoff[i][2], runp->operands[i].off3); + } + + struct instruction *old = runp; + runp = runp->next; + + old->next = reversed; + reversed = old; + } + instructions = reversed; + + int d; + int c; + for (int i = 0; i < 3; ++i) + { + // printf ("min1 = %d, min2 = %d, min3 = %d\n", minoff[i][0], minoff[i][1], minoff[i][2]); + // printf ("max1 = %d, max2 = %d, max3 = %d\n", maxoff[i][0], maxoff[i][1], maxoff[i][2]); + + if (minoff[i][0] == 1000) + nbitoff[i][0] = 0; + else + { + nbitoff[i][0] = 1; + d = maxoff[i][0] - minoff[i][0]; + c = 1; + while (c < d) + { + ++nbitoff[i][0]; + c *= 2; + } + total_bits += nbitoff[i][0]; + } + + if (minoff[i][1] == 1000) + nbitoff[i][1] = 0; + else + { + nbitoff[i][1] = 1; + d = maxoff[i][1] - minoff[i][1]; + c = 1; + while (c < d) + { + ++nbitoff[i][1]; + c *= 2; + } + total_bits += nbitoff[i][1]; + } + + if (minoff[i][2] == 1000) + nbitoff[i][2] = 0; + else + { + nbitoff[i][2] = 1; + d = maxoff[i][2] - minoff[i][2]; + c = 1; + while (c < d) + { + ++nbitoff[i][2]; + c *= 2; + } + total_bits += nbitoff[i][2]; + } + // printf ("off1 = %d, off2 = %d, off3 = %d\n", nbitoff[i][0], nbitoff[i][1], nbitoff[i][2]); + + nbitfct[i] = 1; + d = nfct_names[i]; + c = 1; + while (c < d) + { + ++nbitfct[i]; + c *= 2; + } + total_bits += nbitfct[i]; + // printf ("%d fct[%d], %d bits\n", nfct_names[i], i, nbitfct[i]); + + if (nstrs[i] != 0) + { + nbitstr[i] = 1; + d = nstrs[i]; + c = 1; + while (c < d) + { + ++nbitstr[i]; + c *= 2; + } + total_bits += nbitstr[i]; + } + + // twalk (fct_names[i], nameout); + } + + nbitsuf = 0; + d = nsuffixes; + c = 1; + while (c < d) + { + ++nbitsuf; + c *= 2; + } + total_bits += nbitsuf; + // printf ("%d suffixes, %d bits\n", nsuffixes, nbitsuf); +} + + +static int +compare_syn (const void *p1, const void *p2) +{ + const struct synonym *s1 = (const struct synonym *) p1; + const struct synonym *s2 = (const struct synonym *) p2; + + return strcmp (s1->from, s2->from); +} + + +static int +compare_suf (const void *p1, const void *p2) +{ + const struct suffix *s1 = (const struct suffix *) p1; + const struct suffix *s2 = (const struct suffix *) p2; + + return strcmp (s1->name, s2->name); +} + + +static int count_op_str; +static int off_op_str; +static void +print_op_str (const void *nodep, VISIT value, + int level __attribute__ ((unused))) +{ + if (value == leaf || value == postorder) + { + const char *str = (*(struct argstring **) nodep)->str; + fprintf (outfile, "%s\n \"%s", + count_op_str == 0 ? "" : "\\0\"", str); + (*(struct argstring **) nodep)->idx = ++count_op_str; + (*(struct argstring **) nodep)->off = off_op_str; + off_op_str += strlen (str) + 1; + } +} + + +static void +print_op_str_idx (const void *nodep, VISIT value, + int level __attribute__ ((unused))) +{ + if (value == leaf || value == postorder) + printf (" %d,\n", (*(struct argstring **) nodep)->off); +} + + +static void +print_op_fct (const void *nodep, VISIT value, + int level __attribute__ ((unused))) +{ + if (value == leaf || value == postorder) + { + fprintf (outfile, " FCT_%s,\n", (*(struct argstring **) nodep)->str); + (*(struct argstring **) nodep)->idx = ++count_op_str; + } +} + +static void +instrtable_out (void) +{ + find_numbers (); + +#if 0 + create_mnemonic_table (); + + fprintf (outfile, "#define MNEMONIC_BITS %zu\n", best_mnemonic_bits); +#else + fprintf (outfile, "#define MNEMONIC_BITS %ld\n", + lrint (ceil (log2 (MNE_COUNT)))); +#endif + fprintf (outfile, "#define SUFFIX_BITS %d\n", nbitsuf); + for (int i = 0; i < 3; ++i) + { + fprintf (outfile, "#define FCT%d_BITS %d\n", i + 1, nbitfct[i]); + if (nbitstr[i] != 0) + fprintf (outfile, "#define STR%d_BITS %d\n", i + 1, nbitstr[i]); + fprintf (outfile, "#define OFF%d_1_BITS %d\n", i + 1, nbitoff[i][0]); + fprintf (outfile, "#define OFF%d_1_BIAS %d\n", i + 1, minoff[i][0]); + if (nbitoff[i][1] != 0) + { + fprintf (outfile, "#define OFF%d_2_BITS %d\n", i + 1, nbitoff[i][1]); + fprintf (outfile, "#define OFF%d_2_BIAS %d\n", i + 1, minoff[i][1]); + } + if (nbitoff[i][2] != 0) + { + fprintf (outfile, "#define OFF%d_3_BITS %d\n", i + 1, nbitoff[i][2]); + fprintf (outfile, "#define OFF%d_3_BIAS %d\n", i + 1, minoff[i][2]); + } + } + + fputs ("\n#include \n\n", outfile); + + +#define APPEND(a, b) APPEND_ (a, b) +#define APPEND_(a, b) a##b +#define EMIT_SUFFIX(suf) \ + fprintf (outfile, "#define suffix_%s %d\n", #suf, APPEND (suffix_, suf)) + EMIT_SUFFIX (none); + EMIT_SUFFIX (w); + EMIT_SUFFIX (w0); + EMIT_SUFFIX (W); + EMIT_SUFFIX (tttn); + EMIT_SUFFIX (D); + EMIT_SUFFIX (w1); + EMIT_SUFFIX (W1); + + fputc_unlocked ('\n', outfile); + + for (int i = 0; i < 3; ++i) + { + /* Functions. */ + count_op_str = 0; + fprintf (outfile, "static const opfct_t op%d_fct[] =\n{\n NULL,\n", + i + 1); + twalk (fct_names[i], print_op_fct); + fputs ("};\n", outfile); + + /* The operand strings. */ + if (nbitstr[i] != 0) + { + count_op_str = 0; + off_op_str = 0; + fprintf (outfile, "static const char op%d_str[] =", i + 1); + twalk (strs[i], print_op_str); + fputs ("\";\n", outfile); + + fprintf (outfile, "static const uint8_t op%d_str_idx[] = {\n", + i + 1); + twalk (strs[i], print_op_str_idx); + fputs ("};\n", outfile); + } + } + + + fputs ("static const struct instr_enc instrtab[] =\n{\n", outfile); + struct instruction *instr; + for (instr = instructions; instr != NULL; instr = instr->next) + { + fputs (" {", outfile); + if (instr->mnemonic == (void *) -1l) + fputs (" .mnemonic = MNE_INVALID,", outfile); + else + fprintf (outfile, " .mnemonic = MNE_%s,", instr->mnemonic); + fprintf (outfile, " .rep = %d,", instr->rep); + fprintf (outfile, " .repe = %d,", instr->repe); + fprintf (outfile, " .suffix = %d,", instr->suffix); + fprintf (outfile, " .modrm = %d,", instr->modrm); + + for (int i = 0; i < 3; ++i) + { + int idx = 0; + if (instr->operands[i].fct != NULL) + { + struct argstring search = { .str = instr->operands[i].fct }; + struct argstring **res = tfind (&search, &fct_names[i], + compare_argstring); + assert (res != NULL); + idx = (*res)->idx; + } + fprintf (outfile, " .fct%d = %d,", i + 1, idx); + + idx = 0; + if (instr->operands[i].str != NULL) + { + struct argstring search = { .str = instr->operands[i].str }; + struct argstring **res = tfind (&search, &strs[i], + compare_argstring); + assert (res != NULL); + idx = (*res)->idx; + } + if (nbitstr[i] != 0) + fprintf (outfile, " .str%d = %d,", i + 1, idx); + + fprintf (outfile, " .off%d_1 = %d,", i + 1, + MAX (0, instr->operands[i].off1 - minoff[i][0])); + + if (nbitoff[i][1] != 0) + fprintf (outfile, " .off%d_2 = %d,", i + 1, + MAX (0, instr->operands[i].off2 - minoff[i][1])); + + if (nbitoff[i][2] != 0) + fprintf (outfile, " .off%d_3 = %d,", i + 1, + MAX (0, instr->operands[i].off3 - minoff[i][2])); + } + + fputs (" },\n", outfile); + } + fputs ("};\n", outfile); + + fputs ("static const uint8_t match_data[] =\n{\n", outfile); + size_t cnt = 0; + for (instr = instructions; instr != NULL; instr = instr->next, ++cnt) + { + /* First count the number of bytes. */ + size_t totalbits = 0; + size_t zerobits = 0; + bool leading_p = true; + size_t leadingbits = 0; + struct bitvalue *b = instr->bytes; + while (b != NULL) + { + if (b->type == zeroone) + { + ++totalbits; + zerobits = 0; + if (leading_p) + ++leadingbits; + } + else + { + totalbits += b->field->bits; + /* We must always count the mod/rm byte. */ + if (strncasecmp (b->field->name, "mod", 3) == 0) + zerobits = 0; + else + zerobits += b->field->bits; + leading_p = false; + } + b = b->next; + } + size_t nbytes = (totalbits - zerobits + 7) / 8; + assert (nbytes > 0); + size_t leadingbytes = leadingbits / 8; + + fprintf (outfile, " %#zx,", nbytes | (leadingbytes << 4)); + + /* Now create the mask and byte values. */ + uint8_t byte = 0; + uint8_t mask = 0; + int nbits = 0; + b = instr->bytes; + while (b != NULL) + { + if (b->type == zeroone) + { + byte = (byte << 1) | b->value; + mask = (mask << 1) | 1; + if (++nbits == 8) + { + if (leadingbytes > 0) + { + assert (mask == 0xff); + fprintf (outfile, " %#" PRIx8 ",", byte); + --leadingbytes; + } + else + fprintf (outfile, " %#" PRIx8 ", %#" PRIx8 ",", + mask, byte); + byte = mask = nbits = 0; + if (--nbytes == 0) + break; + } + } + else + { + assert (leadingbytes == 0); + + unsigned long int remaining = b->field->bits; + while (nbits + remaining > 8) + { + fprintf (outfile, " %#" PRIx8 ", %#" PRIx8 ",", + mask << (8 - nbits), byte << (8 - nbits)); + remaining = nbits + remaining - 8; + byte = mask = nbits = 0; + if (--nbytes == 0) + break; + } + byte <<= remaining; + mask <<= remaining; + nbits += remaining; + if (nbits == 8) + { + fprintf (outfile, " %#" PRIx8 ", %#" PRIx8 ",", mask, byte); + byte = mask = nbits = 0; + if (--nbytes == 0) + break; + } + } + b = b->next; + } + + fputc_unlocked ('\n', outfile); + } + fputs ("};\n", outfile); +} + + +#if 0 +static size_t mnemonic_maxlen; +static size_t mnemonic_minlen; +static size_t +which_chars (const char *str[], size_t nstr) +{ + char used_char[256]; + memset (used_char, '\0', sizeof (used_char)); + mnemonic_maxlen = 0; + mnemonic_minlen = 10000; + for (size_t cnt = 0; cnt < nstr; ++cnt) + { + const unsigned char *cp = (const unsigned char *) str[cnt]; + mnemonic_maxlen = MAX (mnemonic_maxlen, strlen ((char *) cp)); + mnemonic_minlen = MIN (mnemonic_minlen, strlen ((char *) cp)); + do + used_char[*cp++] = 1; + while (*cp != '\0'); + } + size_t nused_char = 0; + for (size_t cnt = 0; cnt < 256; ++cnt) + if (used_char[cnt] != 0) + ++nused_char; + return nused_char; +} + + +static const char **mnemonic_strs; +static size_t nmnemonic_strs; +static void +add_mnemonics (const void *nodep, VISIT value, + int level __attribute__ ((unused))) +{ + if (value == leaf || value == postorder) + mnemonic_strs[nmnemonic_strs++] = *(const char **) nodep; +} + + +struct charfreq +{ + char ch; + int freq; +}; +static struct charfreq pfxfreq[256]; +static struct charfreq sfxfreq[256]; + + +static int +compare_freq (const void *p1, const void *p2) +{ + const struct charfreq *c1 = (const struct charfreq *) p1; + const struct charfreq *c2 = (const struct charfreq *) p2; + + if (c1->freq > c2->freq) + return -1; + if (c1->freq < c2->freq) + return 1; + return 0; +} + + +static size_t +compute_pfxfreq (const char *str[], size_t nstr) +{ + memset (pfxfreq, '\0', sizeof (pfxfreq)); + + for (size_t i = 0; i < nstr; ++i) + pfxfreq[i].ch = i; + + for (size_t i = 0; i < nstr; ++i) + ++pfxfreq[*((const unsigned char *) str[i])].freq; + + qsort (pfxfreq, 256, sizeof (struct charfreq), compare_freq); + + size_t n = 0; + while (n < 256 && pfxfreq[n].freq != 0) + ++n; + return n; +} + + +struct strsnlen +{ + const char *str; + size_t len; +}; + +static size_t +compute_sfxfreq (size_t nstr, struct strsnlen *strsnlen) +{ + memset (sfxfreq, '\0', sizeof (sfxfreq)); + + for (size_t i = 0; i < nstr; ++i) + sfxfreq[i].ch = i; + + for (size_t i = 0; i < nstr; ++i) + ++sfxfreq[((const unsigned char *) strchrnul (strsnlen[i].str, '\0'))[-1]].freq; + + qsort (sfxfreq, 256, sizeof (struct charfreq), compare_freq); + + size_t n = 0; + while (n < 256 && sfxfreq[n].freq != 0) + ++n; + return n; +} + + +static void +create_mnemonic_table (void) +{ + mnemonic_strs = xmalloc (nmnemonics * sizeof (char *)); + + twalk (mnemonics, add_mnemonics); + + (void) which_chars (mnemonic_strs, nmnemonic_strs); + + size_t best_so_far = 100000000; + char *best_prefix = NULL; + char *best_suffix = NULL; + char *best_table = NULL; + size_t best_table_size = 0; + size_t best_table_bits = 0; + size_t best_prefix_bits = 0; + + /* We can precompute the prefix characters. */ + size_t npfx_char = compute_pfxfreq (mnemonic_strs, nmnemonic_strs); + + /* Compute best size for string representation including explicit NUL. */ + for (size_t pfxbits = 0; (1u << pfxbits) < 2 * npfx_char; ++pfxbits) + { + char prefix[1 << pfxbits]; + size_t i; + for (i = 0; i < (1u << pfxbits) - 1; ++i) + prefix[i] = pfxfreq[i].ch; + prefix[i] = '\0'; + + struct strsnlen strsnlen[nmnemonic_strs]; + + for (i = 0; i < nmnemonic_strs; ++i) + { + if (strchr (prefix, *mnemonic_strs[i]) != NULL) + strsnlen[i].str = mnemonic_strs[i] + 1; + else + strsnlen[i].str = mnemonic_strs[i]; + strsnlen[i].len = strlen (strsnlen[i].str); + } + + /* With the prefixes gone, try to combine strings. */ + size_t nstrsnlen = 1; + for (i = 1; i < nmnemonic_strs; ++i) + { + size_t j; + for (j = 0; j < nstrsnlen; ++j) + if (strsnlen[i].len > strsnlen[j].len + && strcmp (strsnlen[j].str, + strsnlen[i].str + (strsnlen[i].len + - strsnlen[j].len)) == 0) + { + strsnlen[j] = strsnlen[i]; + break; + } + else if (strsnlen[i].len < strsnlen[j].len + && strcmp (strsnlen[i].str, + strsnlen[j].str + (strsnlen[j].len + - strsnlen[i].len)) == 0) + break; +; + if (j == nstrsnlen) + strsnlen[nstrsnlen++] = strsnlen[i]; + } + + size_t nsfx_char = compute_sfxfreq (nstrsnlen, strsnlen); + + for (size_t sfxbits = 0; (1u << sfxbits) < 2 * nsfx_char; ++sfxbits) + { + char suffix[1 << sfxbits]; + + for (i = 0; i < (1u << sfxbits) - 1; ++i) + suffix[i] = sfxfreq[i].ch; + suffix[i] = '\0'; + + size_t newlen[nstrsnlen]; + + for (i = 0; i < nstrsnlen; ++i) + if (strchr (suffix, strsnlen[i].str[strsnlen[i].len - 1]) != NULL) + newlen[i] = strsnlen[i].len - 1; + else + newlen[i] = strsnlen[i].len; + + char charused[256]; + memset (charused, '\0', sizeof (charused)); + size_t ncharused = 0; + + const char *tablestr[nstrsnlen]; + size_t ntablestr = 1; + tablestr[0] = strsnlen[0].str; + size_t table = newlen[0] + 1; + for (i = 1; i < nstrsnlen; ++i) + { + size_t j; + for (j = 0; j < ntablestr; ++j) + if (newlen[i] > newlen[j] + && memcmp (tablestr[j], + strsnlen[i].str + (newlen[i] - newlen[j]), + newlen[j]) == 0) + { + table += newlen[i] - newlen[j]; + tablestr[j] = strsnlen[i].str; + newlen[j] = newlen[i]; + break; + } + else if (newlen[i] < newlen[j] + && memcmp (strsnlen[i].str, + tablestr[j] + (newlen[j] - newlen[i]), + newlen[i]) == 0) + break; + + if (j == ntablestr) + { + table += newlen[i] + 1; + tablestr[ntablestr] = strsnlen[i].str; + newlen[ntablestr] = newlen[i]; + + ++ntablestr; + } + + for (size_t x = 0; x < newlen[j]; ++x) + if (charused[((const unsigned char *) tablestr[j])[x]]++ == 0) + ++ncharused; + } + + size_t ncharused_bits = 0; + i = 1; + while (i < ncharused) + { + i *= 2; + ++ncharused_bits; + } + + size_t table_bits = 0; + i = 1; + while (i < table) + { + i *= 2; + ++table_bits; + } + + size_t mnemonic_bits = table_bits + pfxbits + sfxbits; + size_t new_total = (((table + 7) / 8) * ncharused_bits + ncharused + + (pfxbits == 0 ? 0 : (1 << pfxbits) - 1) + + (sfxbits == 0 ? 0 : (1 << sfxbits) - 1) + + (((total_bits + mnemonic_bits + 7) / 8) + * ninstructions)); + + if (new_total < best_so_far) + { + best_so_far = new_total; + best_mnemonic_bits = mnemonic_bits; + + free (best_suffix); + best_suffix = xstrdup (suffix); + + free (best_prefix); + best_prefix = xstrdup (prefix); + best_prefix_bits = pfxbits; + + best_table_size = table; + best_table_bits = table_bits; + char *cp = best_table = xrealloc (best_table, table); + for (i = 0; i < ntablestr; ++i) + { + assert (cp + newlen[i] + 1 <= best_table + table); + cp = mempcpy (cp, tablestr[i], newlen[i]); + *cp++ = '\0'; + } + assert (cp == best_table + table); + } + } + } + + fputs ("static const char mnemonic_table[] =\n\"", outfile); + for (size_t i = 0; i < best_table_size; ++i) + { + if (((i + 1) % 60) == 0) + fputs ("\"\n\"", outfile); + if (!isascii (best_table[i]) || !isprint (best_table[i])) + fprintf (outfile, "\\%03o", best_table[i]); + else + fputc (best_table[i], outfile); + } + fputs ("\";\n", outfile); + + if (best_prefix[0] != '\0') + fprintf (outfile, + "static const char prefix[%zu] = \"%s\";\n" + "#define PREFIXCHAR_BITS %zu\n", + strlen (best_prefix), best_prefix, best_prefix_bits); + else + fputs ("#define NO_PREFIX\n", outfile); + + if (best_suffix[0] != '\0') + fprintf (outfile, "static const char suffix[%zu] = \"%s\";\n", + strlen (best_suffix), best_suffix); + else + fputs ("#define NO_SUFFIX\n", outfile); + + for (size_t i = 0; i < nmnemonic_strs; ++i) + { + const char *mne = mnemonic_strs[i]; + + size_t pfxval = 0; + char *cp = strchr (best_prefix, *mne); + if (cp != NULL) + { + pfxval = 1 + (cp - best_prefix); + ++mne; + } + + size_t l = strlen (mne); + + size_t sfxval = 0; + cp = strchr (best_suffix, mne[l - 1]); + if (cp != NULL) + { + sfxval = 1 + (cp - best_suffix); + --l; + } + + char *off = memmem (best_table, best_table_size, mne, l); + while (off[l] != '\0') + { + off = memmem (off + 1, best_table_size, mne, l); + assert (off != NULL); + } + + fprintf (outfile, "#define MNE_%s %#zx\n", + mnemonic_strs[i], + (off - best_table) + + ((pfxval + (sfxval << best_prefix_bits)) << best_table_bits)); + } +} +#endif diff --git a/libcpu/i386_parse.h b/libcpu/i386_parse.h new file mode 100644 index 0000000000000000000000000000000000000000..18f896dab0325e74aa22fe9e04a5a03e896261db --- /dev/null +++ b/libcpu/i386_parse.h @@ -0,0 +1,115 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program 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. + + This program 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 . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_I386_I_PARSE_H_INCLUDED +# define YY_I386_I_PARSE_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int i386_debug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + kMASK = 258, /* kMASK */ + kPREFIX = 259, /* kPREFIX */ + kSUFFIX = 260, /* kSUFFIX */ + kSYNONYM = 261, /* kSYNONYM */ + kID = 262, /* kID */ + kNUMBER = 263, /* kNUMBER */ + kPERCPERC = 264, /* kPERCPERC */ + kBITFIELD = 265, /* kBITFIELD */ + kCHAR = 266, /* kCHAR */ + kSPACE = 267 /* kSPACE */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEMPTY -2 +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define kMASK 258 +#define kPREFIX 259 +#define kSUFFIX 260 +#define kSYNONYM 261 +#define kID 262 +#define kNUMBER 263 +#define kPERCPERC 264 +#define kBITFIELD 265 +#define kCHAR 266 +#define kSPACE 267 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 217 "i386_parse.y" + + unsigned long int num; + char *str; + char ch; + struct known_bitfield *field; + struct bitvalue *bit; + struct argname *name; + struct argument *arg; + +#line 101 "i386_parse.h" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE i386_lval; + + +int i386_parse (void); + + +#endif /* !YY_I386_I_PARSE_H_INCLUDED */ diff --git a/libcpu/i386_parse.y b/libcpu/i386_parse.y index d2236d5993543d979f48630997ca13f80638d3b8..459684c6a9dca37b2ba49e90a2f4a26b9ea3d75c 100644 --- a/libcpu/i386_parse.y +++ b/libcpu/i386_parse.y @@ -46,6 +46,8 @@ #include #include +#include "i386_mne.h" + #define obstack_chunk_alloc xmalloc #define obstack_chunk_free free @@ -1107,11 +1109,6 @@ print_op_fct (const void *nodep, VISIT value, } } - -#if NMNES < 2 -# error "bogus NMNES value" -#endif - static void instrtable_out (void) { @@ -1123,7 +1120,7 @@ instrtable_out (void) fprintf (outfile, "#define MNEMONIC_BITS %zu\n", best_mnemonic_bits); #else fprintf (outfile, "#define MNEMONIC_BITS %ld\n", - lrint (ceil (log2 (NMNES)))); + lrint (ceil (log2 (MNE_COUNT)))); #endif fprintf (outfile, "#define SUFFIX_BITS %d\n", nbitsuf); for (int i = 0; i < 3; ++i) diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c index 7175c077062d4a3ef3efa78684e37a7b2523b8c7..823fe9ca05616362c6dd06ac48070b16c532d692 100644 --- a/libcpu/riscv_disasm.c +++ b/libcpu/riscv_disasm.c @@ -39,7 +39,7 @@ #include #include -#include "../libebl/libeblP.h" +#include "libeblP.h" #define MACHINE_ENCODING LITTLE_ENDIAN #include "memory-access.h" diff --git a/libcpu/x86_64.mnemonics b/libcpu/x86_64.mnemonics deleted file mode 100644 index 87e9ee8513786860a93e83c685f515a4dffc499a..0000000000000000000000000000000000000000 --- a/libcpu/x86_64.mnemonics +++ /dev/null @@ -1,503 +0,0 @@ -MNE(adc) -MNE(add) -MNE(addpd) -MNE(addps) -MNE(addsd) -MNE(addss) -MNE(addsubpd) -MNE(addsubps) -MNE(and) -MNE(andnpd) -MNE(andnps) -MNE(andpd) -MNE(andps) -MNE(blendpd) -MNE(blendps) -MNE(blendvpd) -MNE(blendvps) -MNE(bsf) -MNE(bsr) -MNE(bswap) -MNE(bt) -MNE(btc) -MNE(btr) -MNE(bts) -MNE(call) -MNE(clc) -MNE(cld) -MNE(clflush) -MNE(cli) -MNE(clts) -MNE(cmc) -MNE(cmov) -MNE(cmp) -MNE(cmpeqps) -MNE(cmpeqss) -MNE(cmpleps) -MNE(cmpless) -MNE(cmpltps) -MNE(cmpltss) -MNE(cmpneqps) -MNE(cmpneqss) -MNE(cmpnleps) -MNE(cmpnless) -MNE(cmpnltps) -MNE(cmpnltss) -MNE(cmpordps) -MNE(cmpordss) -MNE(cmps) -MNE(cmpunordps) -MNE(cmpunordss) -MNE(cmpxchg) -MNE(comisd) -MNE(comiss) -MNE(cpuid) -MNE(cvtdq2pd) -MNE(cvtdq2ps) -MNE(cvtpd2dq) -MNE(cvtpd2pi) -MNE(cvtpd2ps) -MNE(cvtpi2pd) -MNE(cvtpi2ps) -MNE(cvtps2dq) -MNE(cvtps2pd) -MNE(cvtps2pi) -MNE(cvtsd2si) -MNE(cvtsd2ss) -MNE(cvtsi2sd) -MNE(cvtsi2ss) -MNE(cvtss2sd) -MNE(cvtss2si) -MNE(cvttpd2dq) -MNE(cvttpd2pi) -MNE(cvttps2dq) -MNE(cvttps2pi) -MNE(cvttsd2si) -MNE(cvttss2si) -MNE(dec) -MNE(div) -MNE(divpd) -MNE(divps) -MNE(divsd) -MNE(divss) -MNE(dppd) -MNE(dpps) -MNE(emms) -MNE(enter) -MNE(f2xm1) -MNE(fabs) -MNE(fadd) -MNE(faddp) -MNE(fbld) -MNE(fbstp) -MNE(fchs) -MNE(fclex) -MNE(fcmovb) -MNE(fcmovbe) -MNE(fcmove) -MNE(fcmovnb) -MNE(fcmovnbe) -MNE(fcmovne) -MNE(fcmovnu) -MNE(fcmovu) -MNE(fcom) -MNE(fcomi) -MNE(fcomip) -MNE(fcomp) -MNE(fcompp) -MNE(fcos) -MNE(fdecstp) -MNE(fdiv) -MNE(fdivp) -MNE(fdivr) -MNE(fdivrp) -MNE(ffree) -MNE(fiadd) -MNE(ficom) -MNE(ficomp) -MNE(fidiv) -MNE(fidivl) -MNE(fidivr) -MNE(fidivrl) -MNE(fild) -MNE(fildl) -MNE(fildll) -MNE(fimul) -MNE(fincstp) -MNE(finit) -MNE(fist) -MNE(fistp) -MNE(fistpll) -MNE(fisttp) -MNE(fisttpll) -MNE(fisub) -MNE(fisubr) -MNE(fld) -MNE(fld1) -MNE(fldcw) -MNE(fldenv) -MNE(fldl2e) -MNE(fldl2t) -MNE(fldlg2) -MNE(fldln2) -MNE(fldpi) -MNE(fldt) -MNE(fldz) -MNE(fmul) -MNE(fmulp) -MNE(fnclex) -MNE(fninit) -MNE(fnop) -MNE(fnsave) -MNE(fnstcw) -MNE(fnstenv) -MNE(fnstsw) -MNE(fpatan) -MNE(fprem) -MNE(fprem1) -MNE(fptan) -MNE(frndint) -MNE(frstor) -MNE(fscale) -MNE(fsin) -MNE(fsincos) -MNE(fsqrt) -MNE(fst) -MNE(fstp) -MNE(fstpt) -MNE(fsub) -MNE(fsubp) -MNE(fsubr) -MNE(fsubrp) -MNE(ftst) -MNE(fucom) -MNE(fucomi) -MNE(fucomip) -MNE(fucomp) -MNE(fwait) -MNE(fxam) -MNE(fxch) -MNE(fxrstor) -MNE(fxsave) -MNE(fxtract) -MNE(fyl2x) -MNE(fyl2xp1) -MNE(getsec) -MNE(haddpd) -MNE(haddps) -MNE(hlt) -MNE(hsubpd) -MNE(hsubps) -MNE(idiv) -MNE(imul) -MNE(in) -MNE(inc) -MNE(ins) -MNE(insertps) -MNE(int) -MNE(int3) -MNE(invd) -MNE(invlpg) -MNE(iret) -MNE(j) -MNE(jmp) -MNE(lahf) -MNE(lar) -MNE(lcall) -MNE(lddqu) -MNE(ldmxcsr) -MNE(lea) -MNE(leave) -MNE(lfence) -MNE(lfs) -MNE(lgdt) -MNE(lgs) -MNE(lidt) -MNE(ljmp) -MNE(lldt) -MNE(lmsw) -MNE(lock) -MNE(lods) -MNE(loop) -MNE(loope) -MNE(loopne) -MNE(lret) -MNE(lsl) -MNE(lss) -MNE(ltr) -MNE(maskmovdqu) -MNE(maskmovq) -MNE(maxpd) -MNE(maxps) -MNE(maxsd) -MNE(maxss) -MNE(mfence) -MNE(minpd) -MNE(minps) -MNE(minsd) -MNE(minss) -MNE(monitor) -MNE(mov) -MNE(movapd) -MNE(movaps) -MNE(movd) -MNE(movddup) -MNE(movdq2q) -MNE(movdqa) -MNE(movdqu) -MNE(movhlpd) -MNE(movhlps) -MNE(movhpd) -MNE(movhps) -MNE(movlhpd) -MNE(movlhps) -MNE(movlpd) -MNE(movlps) -MNE(movmskpd) -MNE(movmskps) -MNE(movntdq) -MNE(movntdqa) -MNE(movnti) -MNE(movntpd) -MNE(movntps) -MNE(movntq) -MNE(movq) -MNE(movq2dq) -MNE(movs) -MNE(movsbl) -MNE(movsd) -MNE(movshdup) -MNE(movsldup) -MNE(movslq) -MNE(movss) -MNE(movswl) -MNE(movupd) -MNE(movups) -MNE(movzbl) -MNE(movzwl) -MNE(mpsadbw) -MNE(mul) -MNE(mulpd) -MNE(mulps) -MNE(mulsd) -MNE(mulss) -MNE(mwait) -MNE(neg) -MNE(nop) -MNE(not) -MNE(or) -MNE(orpd) -MNE(orps) -MNE(out) -MNE(outs) -MNE(pabsb) -MNE(pabsd) -MNE(pabsw) -MNE(packssdw) -MNE(packsswb) -MNE(packusdw) -MNE(packuswb) -MNE(paddb) -MNE(paddd) -MNE(paddq) -MNE(paddsb) -MNE(paddsw) -MNE(paddusb) -MNE(paddusw) -MNE(paddw) -MNE(palignr) -MNE(pand) -MNE(pandn) -MNE(pause) -MNE(pavgb) -MNE(pavgw) -MNE(pblendvb) -MNE(pblendw) -MNE(pcmpeqb) -MNE(pcmpeqd) -MNE(pcmpeqq) -MNE(pcmpeqw) -MNE(pcmpestri) -MNE(pcmpestrm) -MNE(pcmpgtb) -MNE(pcmpgtd) -MNE(pcmpgtq) -MNE(pcmpgtw) -MNE(pcmpistri) -MNE(pcmpistrm) -MNE(pextrw) -MNE(phaddd) -MNE(phaddsw) -MNE(phaddw) -MNE(phminposuw) -MNE(phsubd) -MNE(phsubsw) -MNE(phsubw) -MNE(pinsrb) -MNE(pinsrd) -MNE(pinsrw) -MNE(pmaddubsw) -MNE(pmaddwd) -MNE(pmaxsb) -MNE(pmaxsd) -MNE(pmaxsw) -MNE(pmaxub) -MNE(pmaxud) -MNE(pmaxuw) -MNE(pminsb) -MNE(pminsd) -MNE(pminsw) -MNE(pminub) -MNE(pminud) -MNE(pminuw) -MNE(pmovmskb) -MNE(pmovsxbd) -MNE(pmovsxbq) -MNE(pmovsxbw) -MNE(pmovsxdq) -MNE(pmovsxwd) -MNE(pmovsxwq) -MNE(pmovzxbd) -MNE(pmovzxbq) -MNE(pmovzxbw) -MNE(pmovzxdq) -MNE(pmovzxwd) -MNE(pmovzxwq) -MNE(pmuldq) -MNE(pmulhrsw) -MNE(pmulhuw) -MNE(pmulhw) -MNE(pmulld) -MNE(pmullw) -MNE(pmuludq) -MNE(pop) -MNE(popcnt) -MNE(popf) -MNE(por) -MNE(prefetch) -MNE(prefetchnta) -MNE(prefetcht0) -MNE(prefetcht1) -MNE(prefetcht2) -MNE(prefetchw) -MNE(psadbw) -MNE(pshufb) -MNE(pshufd) -MNE(pshufhw) -MNE(pshuflw) -MNE(pshufw) -MNE(psignb) -MNE(psignd) -MNE(psignw) -MNE(pslld) -MNE(pslldq) -MNE(psllq) -MNE(psllw) -MNE(psrad) -MNE(psraw) -MNE(psrld) -MNE(psrldq) -MNE(psrlq) -MNE(psrlw) -MNE(psubb) -MNE(psubd) -MNE(psubq) -MNE(psubsb) -MNE(psubsw) -MNE(psubusb) -MNE(psubusw) -MNE(psubw) -MNE(ptest) -MNE(punpckhbw) -MNE(punpckhdq) -MNE(punpckhqdq) -MNE(punpckhwd) -MNE(punpcklbw) -MNE(punpckldq) -MNE(punpcklqdq) -MNE(punpcklwd) -MNE(push) -MNE(pushf) -MNE(pushq) -MNE(pxor) -MNE(rcl) -MNE(rcpps) -MNE(rcpss) -MNE(rcr) -MNE(rdmsr) -MNE(rdpmc) -MNE(rdtsc) -MNE(ret) -MNE(rol) -MNE(ror) -MNE(roundpd) -MNE(roundps) -MNE(roundsd) -MNE(roundss) -MNE(rsm) -MNE(rsqrtps) -MNE(rsqrtss) -MNE(sahf) -MNE(sar) -MNE(sbb) -MNE(scas) -MNE(set) -MNE(sfence) -MNE(sgdt) -MNE(shl) -MNE(shld) -MNE(shr) -MNE(shrd) -MNE(shufpd) -MNE(shufps) -MNE(sidt) -MNE(sldt) -MNE(smsw) -MNE(sqrtpd) -MNE(sqrtps) -MNE(sqrtsd) -MNE(sqrtss) -MNE(stc) -MNE(std) -MNE(sti) -MNE(stmxcsr) -MNE(stos) -MNE(str) -MNE(sub) -MNE(subpd) -MNE(subps) -MNE(subsd) -MNE(subss) -MNE(swapgs) -MNE(syscall) -MNE(sysenter) -MNE(sysexit) -MNE(sysret) -MNE(test) -MNE(ucomisd) -MNE(ucomiss) -MNE(ud2a) -MNE(unpckhpd) -MNE(unpckhps) -MNE(unpcklpd) -MNE(unpcklps) -MNE(verr) -MNE(verw) -MNE(vmcall) -MNE(vmclear) -MNE(vmlaunch) -MNE(vmptrld) -MNE(vmptrst) -MNE(vmread) -MNE(vmresume) -MNE(vmwrite) -MNE(vmxoff) -MNE(vmxon) -MNE(wbinvd) -MNE(wrmsr) -MNE(xadd) -MNE(xchg) -MNE(xlat) -MNE(xor) -MNE(xorpd) -MNE(xorps) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index 3c595a3d24d350ab96f85abe2c847ea0cc0b3e7f..b19fc80df6807ac49992d691f663c72c83f81083 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,107 @@ +2023-09-27 Omar Sandoval + + * libdwP.h ((Dwarf): Add elfpath. + * dwarf_begin_elf.c (__libdw_debugdir): Replace declaration with... + (__libdw_elfpath): New declaration. + (__libdw_set_debugdir): New declaration. + (__libdw_debugdir): Replace with.. + (__libdw_elfpath): New function. + (__libdw_set_debugdir): New function. + (valid_p): Call __libdw_elfpath and __libdw_set_debugdir instead of + __libdw_debugdir. + * dwarf_end.c (dwarf_end): Free dwarf->elfpath. + +2023-09-27 Omar Sandoval + + * libdw_find_split_unit.c (try_split_file): Make static. + * dwarf_entrypc.c (dwarf_entrypc): Call dwarf_lowpc. + * dwarf_ranges.c (dwarf_ranges): Use skeleton ranges section for + skeleton units. + * dwarf_macro_param2.c (dwarf_macro_param2): Change form condition to + switch statement and add DW_FORM_line_strp, DW_FORM_strp_sup, + DW_FORM_strx, and DW_FORM_strx[1-4]. + * dwarf_getmacros.c (get_macinfo_table): Replace assignment of + table->is_64bit with assignments of table->address_size and + table->offset_size. Assume default DW_AT_stmt_list of 0 for split + DWARF. Set table->dbg. + (get_table_for_offset): Ditto. + (read_macros): Get fake CU offset_size from table->offset_size instead + of table->is_64bit. + * dwarf_macro_getsrcfiles.c (dwarf_macro_getsrcfiles): Get + address_size for __libdw_getsrclines from table->address_size instead + of table->is_64bit. Get dbg for __libdw_getsrclines from table->dbg + instead of dbg parameter, which is now unused. + * libdwP.h (Dwarf_Macro_Op_Table): Replace is_64bit with address_size + and offset_size. Add dbg. + Add IDX_debug_cu_index and IDX_debug_tu_index. + * dwarf_begin_elf.c (dwarf_scnnames): Add IDX_debug_cu_index and + IDX_debug_tu_index. + (scn_to_string_section_idx): Ditto. + (scn_dwarf_type): Check for .debug_cu_index, .debug_tu_index, + .zdebug_cu_index, and .zdebug_tu_index. + (check_section): Change .dwo suffix matching to account for + .debug_cu_index and .debug_tu_index. + +2023-02-22 Mark Wielaard + + * dwarf_getscopes.c (origin_match): Don't free a->scopes. + (dwarf_getscopes): Free a->scopes on error. + +2023-02-20 Mark Wielaard + + * dwarf_begin_elf.c (check_section): Use elf_rawdata. + +2023-02-14 Mark Wielaard + + * dwarf_getlocation.c (__libdw_intern_expression): Correct check + for deref_type. + +2023-02-10 Mark Wielaard + + * dwarf_getlocation.c (__libdw_intern_expression): Handle + DW_OP_GNU_uninit. + +2023-02-12 Mark Wielaard + + * cfi.c (execute_cfi): Add cfi_asser before reading second lib128. + * dwarf_chld.c (__libdw_find_attr): Check readp >= endp before + calling get_uleb128. + * dwarf_frame_register.c (dwarf_frame_register): Likewise for + p >= end. + * dwarf_getabbrev.c (__libdw_getabbrev): Add comment about check. + * dwarf_getlocation.c (__libdw_intern_expression): Update check to + account for both the number and uleb128. + * encoded-value.h (read_encoded_value): Check p >= end for + DW_EH_PE_(u|s)leb128. + * fde.c (intern_fde): Check len can be read as uleb128. + * libdw_form.c (__libdw_form_val_compute_len): Check valp >= endp + before get_uleb128. + +2023-01-22 Mark Wielaard + + * dwarf_getscopes.c (pc_record): Return nscopes when done. + (dwarf_getscopes): Call __libdw_visit_scopes with + inlined_origin CU. + +2022-12-20 Mark Wielaard + + * Makefile.am (AM_CPPFLAGS): Add -I$(srcdir)/../libebl. + * cfi.c: Include libebl.h. + * encoded-value.h: Likewise. + * frame-cache.h: Likewise. + +2022-10-21 Yonggang Luo + + * memory-access.h (get_uleb128_step): Use __typeof. + (get_sleb128_step): Likewise. + (__libdw_get_sleb128) Likewise. + (__libdw_get_sleb128_unchecked): Likewise. + +2022-11-03 Mark Wielaard + + * dwarf_next_cfi.c (dwarf_next_cfi): Don't dereference and assign + bytes. + 2022-10-21 Yonggang Luo * dwarf_begin_elf.h: Don't include unistd.h and endian.h. diff --git a/libdw/Makefile.am b/libdw/Makefile.am index 4fda33bd072d11cdf960a0608b87d8a6c4edf8bb..e548f38c9ecbd2e2af8d770625a39987c5c94ea5 100644 --- a/libdw/Makefile.am +++ b/libdw/Makefile.am @@ -31,7 +31,7 @@ include $(top_srcdir)/config/eu.am if BUILD_STATIC AM_CFLAGS += $(fpic_CFLAGS) endif -AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libdwelf -pthread +AM_CPPFLAGS += -I$(srcdir)/../libebl -I$(srcdir)/../libelf -I$(srcdir)/../libdwelf -pthread VERSION = 1 lib_LIBRARIES = libdw.a @@ -114,7 +114,8 @@ libdw_so_LDLIBS = $(libdw_so_DEPS) -ldl -lz $(argp_LDADD) $(fts_LIBS) $(obstack_ 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 \ + -Wl,--version-script,$< \ + $(NO_UNDEFINED) \ -Wl,--whole-archive $(libdw_so_LIBS) -Wl,--no-whole-archive \ $(libdw_so_LDLIBS) @$(textrel_check) diff --git a/libdw/cfi.c b/libdw/cfi.c index a73fb03f73e5deb104e0cb10086b1d7050131ab6..a71744056459d9cbea1b3c3325285664174bad74 100644 --- a/libdw/cfi.c +++ b/libdw/cfi.c @@ -31,7 +31,7 @@ #endif #include -#include "../libebl/libebl.h" +#include "libebl.h" #include "cfi.h" #include "memory-access.h" #include "encoded-value.h" @@ -239,6 +239,7 @@ execute_cfi (Dwarf_CFI *cache, case DW_CFA_offset_extended_sf: get_uleb128 (operand, program, end); + cfi_assert (program < end); get_sleb128 (sf_offset, program, end); offset_extended_sf: offset = sf_offset * cie->data_alignment_factor; @@ -294,6 +295,7 @@ execute_cfi (Dwarf_CFI *cache, get_uleb128 (regno, program, end); /* DW_FORM_block is a ULEB128 length followed by that many bytes. */ offset = program - (const uint8_t *) cache->data->d.d_buf; + cfi_assert (program < end); get_uleb128 (operand, program, end); cfi_assert (operand <= (Dwarf_Word) (end - program)); program += operand; diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c index 8fcef335efbb45feb158571f51f941b4a596dbc5..323a91d07943a762fa6e995330a25dabd98f1f17 100644 --- a/libdw/dwarf_begin_elf.c +++ b/libdw/dwarf_begin_elf.c @@ -1,5 +1,6 @@ /* Create descriptor from ELF descriptor for processing file. Copyright (C) 2002-2011, 2014, 2015, 2017, 2018 Red Hat, Inc. + Copyright (C) 2023, Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -66,10 +67,38 @@ static const char dwarf_scnnames[IDX_last][19] = [IDX_debug_macro] = ".debug_macro", [IDX_debug_ranges] = ".debug_ranges", [IDX_debug_rnglists] = ".debug_rnglists", + [IDX_debug_cu_index] = ".debug_cu_index", + [IDX_debug_tu_index] = ".debug_tu_index", [IDX_gnu_debugaltlink] = ".gnu_debugaltlink" }; #define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0])) +/* Map from section index to string section index. + Non-string sections should have STR_SCN_IDX_last. */ +static const enum string_section_index scn_to_string_section_idx[IDX_last] = +{ + [IDX_debug_info] = STR_SCN_IDX_last, + [IDX_debug_types] = STR_SCN_IDX_last, + [IDX_debug_abbrev] = STR_SCN_IDX_last, + [IDX_debug_addr] = STR_SCN_IDX_last, + [IDX_debug_aranges] = STR_SCN_IDX_last, + [IDX_debug_line] = STR_SCN_IDX_last, + [IDX_debug_line_str] = STR_SCN_IDX_debug_line_str, + [IDX_debug_frame] = STR_SCN_IDX_last, + [IDX_debug_loc] = STR_SCN_IDX_last, + [IDX_debug_loclists] = STR_SCN_IDX_last, + [IDX_debug_pubnames] = STR_SCN_IDX_last, + [IDX_debug_str] = STR_SCN_IDX_debug_str, + [IDX_debug_str_offsets] = STR_SCN_IDX_last, + [IDX_debug_macinfo] = STR_SCN_IDX_last, + [IDX_debug_macro] = STR_SCN_IDX_last, + [IDX_debug_ranges] = STR_SCN_IDX_last, + [IDX_debug_rnglists] = STR_SCN_IDX_last, + [IDX_debug_cu_index] = STR_SCN_IDX_last, + [IDX_debug_tu_index] = STR_SCN_IDX_last, + [IDX_gnu_debugaltlink] = STR_SCN_IDX_last +}; + static enum dwarf_type scn_dwarf_type (Dwarf *result, size_t shstrndx, Elf_Scn *scn) { @@ -84,6 +113,11 @@ scn_dwarf_type (Dwarf *result, size_t shstrndx, Elf_Scn *scn) { if (startswith (scnname, ".gnu.debuglto_.debug")) return TYPE_GNU_LTO; + else if (strcmp (scnname, ".debug_cu_index") == 0 + || strcmp (scnname, ".debug_tu_index") == 0 + || strcmp (scnname, ".zdebug_cu_index") == 0 + || strcmp (scnname, ".zdebug_tu_index") == 0) + return TYPE_DWO; else if (startswith (scnname, ".debug_") || startswith (scnname, ".zdebug_")) { size_t len = strlen (scnname); @@ -148,42 +182,34 @@ check_section (Dwarf *result, size_t shstrndx, Elf_Scn *scn, bool inscngrp) bool gnu_compressed = false; for (cnt = 0; cnt < ndwarf_scnnames; ++cnt) { + /* .debug_cu_index and .debug_tu_index don't have a .dwo suffix, + but they are for DWO. */ + if (result->type != TYPE_DWO + && (cnt == IDX_debug_cu_index || cnt == IDX_debug_tu_index)) + continue; + bool need_dot_dwo = + (result->type == TYPE_DWO + && cnt != IDX_debug_cu_index + && cnt != IDX_debug_tu_index); size_t dbglen = strlen (dwarf_scnnames[cnt]); size_t scnlen = strlen (scnname); if (strncmp (scnname, dwarf_scnnames[cnt], dbglen) == 0 - && (dbglen == scnlen - || (scnlen == dbglen + 4 + && ((!need_dot_dwo && dbglen == scnlen) + || (need_dot_dwo + && scnlen == dbglen + 4 && strstr (scnname, ".dwo") == scnname + dbglen))) - { - if (dbglen == scnlen) - { - if (result->type == TYPE_PLAIN) - break; - } - else if (result->type == TYPE_DWO) - break; - } + break; else if (scnname[0] == '.' && scnname[1] == 'z' && (strncmp (&scnname[2], &dwarf_scnnames[cnt][1], dbglen - 1) == 0 - && (scnlen == dbglen + 1 - || (scnlen == dbglen + 5 + && ((!need_dot_dwo && scnlen == dbglen + 1) + || (need_dot_dwo + && scnlen == dbglen + 5 && strstr (scnname, ".dwo") == scnname + dbglen + 1)))) { - if (scnlen == dbglen + 1) - { - if (result->type == TYPE_PLAIN) - { - gnu_compressed = true; - break; - } - } - else if (result->type <= TYPE_DWO) - { - gnu_compressed = true; - break; - } + gnu_compressed = true; + break; } else if (scnlen > 14 /* .gnu.debuglto_ prefix. */ && startswith (scnname, ".gnu.debuglto_") @@ -218,8 +244,8 @@ check_section (Dwarf *result, size_t shstrndx, Elf_Scn *scn, bool inscngrp) } } - /* Get the section data. */ - Elf_Data *data = elf_getdata (scn, NULL); + /* Get the section data. Should be raw bytes, no conversion needed. */ + Elf_Data *data = elf_rawdata (scn, NULL); if (data == NULL) goto err; @@ -230,27 +256,43 @@ check_section (Dwarf *result, size_t shstrndx, Elf_Scn *scn, bool inscngrp) /* We can now read the section data into results. */ result->sectiondata[cnt] = data; + /* If the section contains string data, we want to know a size of a prefix + where any string will be null-terminated. */ + enum string_section_index string_section_idx = scn_to_string_section_idx[cnt]; + if (string_section_idx < STR_SCN_IDX_last) + { + size_t size = data->d_size; + /* Reduce the size by the number of non-zero bytes at the end of the + section. */ + while (size > 0 && *((const char *) data->d_buf + size - 1) != '\0') + --size; + result->string_section_size[string_section_idx] = size; + } + return result; } - -/* Helper function to set debugdir field. We want to cache the dir - where we found this Dwarf ELF file to locate alt and dwo files. */ char * -__libdw_debugdir (int fd) +__libdw_elfpath (int fd) { /* strlen ("/proc/self/fd/") = 14 + strlen () = 10 + 1 = 25. */ char devfdpath[25]; sprintf (devfdpath, "/proc/self/fd/%u", fd); - char *fdpath = realpath (devfdpath, NULL); - char *fddir; - if (fdpath != NULL && fdpath[0] == '/' - && (fddir = strrchr (fdpath, '/')) != NULL) - { - *++fddir = '\0'; - return fdpath; - } - return NULL; + return realpath (devfdpath, NULL); +} + + +void +__libdw_set_debugdir (Dwarf *dbg) +{ + if (dbg->elfpath == NULL || dbg->elfpath[0] != '/') + return; + size_t dirlen = strrchr (dbg->elfpath, '/') - dbg->elfpath + 1; + dbg->debugdir = malloc (dirlen + 1); + if (dbg->debugdir == NULL) + return; + memcpy (dbg->debugdir, dbg->elfpath, dirlen); + dbg->debugdir[dirlen] = '\0'; } @@ -382,7 +424,10 @@ valid_p (Dwarf *result) } if (result != NULL) - result->debugdir = __libdw_debugdir (result->elf->fildes); + { + result->elfpath = __libdw_elfpath (result->elf->fildes); + __libdw_set_debugdir(result); + } return result; } diff --git a/libdw/dwarf_child.c b/libdw/dwarf_child.c index c8c8bb613a4bddfb2e40aeab2f09e7ca626cf05d..96a0d608bcaa21d54f0a935d9ca03b5de36bea5d 100644 --- a/libdw/dwarf_child.c +++ b/libdw/dwarf_child.c @@ -73,10 +73,13 @@ __libdw_find_attr (Dwarf_Die *die, unsigned int search_name, if (attr_form == DW_FORM_indirect) { + if (readp >= endp) + goto invalid; get_uleb128 (attr_form, readp, endp); if (attr_form == DW_FORM_indirect || attr_form == DW_FORM_implicit_const) { + invalid: __libdw_seterrno (DWARF_E_INVALID_DWARF); return NULL; } diff --git a/libdw/dwarf_end.c b/libdw/dwarf_end.c index 8dd075cf6b29fc0e50be32f5785acfefcc48cf62..e51d5dd78856b78caf6b839aaf5a7853c0255226 100644 --- a/libdw/dwarf_end.c +++ b/libdw/dwarf_end.c @@ -144,7 +144,8 @@ dwarf_end (Dwarf *dwarf) close (dwarf->alt_fd); } - /* The cached dir we found the Dwarf ELF file in. */ + /* The cached path and dir we found the Dwarf ELF file in. */ + free (dwarf->elfpath); free (dwarf->debugdir); /* Free the context descriptor. */ diff --git a/libdw/dwarf_entrypc.c b/libdw/dwarf_entrypc.c index 0ef3b0ea35b6f8ccd648c468ebe9707cae00831e..543567d4cc7a652e44b3abd947d3628a28309c38 100644 --- a/libdw/dwarf_entrypc.c +++ b/libdw/dwarf_entrypc.c @@ -37,12 +37,10 @@ int dwarf_entrypc (Dwarf_Die *die, Dwarf_Addr *return_addr) { - Dwarf_Attribute attr_mem; - - return INTUSE(dwarf_formaddr) (INTUSE(dwarf_attr) (die, DW_AT_entry_pc, - &attr_mem) - ?: INTUSE(dwarf_attr) (die, DW_AT_low_pc, - &attr_mem), - return_addr); + Dwarf_Attribute attr_mem, *attr; + if ((attr = INTUSE(dwarf_attr) (die, DW_AT_entry_pc, &attr_mem)) != NULL) + return INTUSE(dwarf_formaddr) (attr, return_addr); + else + return INTUSE(dwarf_lowpc) (die, return_addr); } INTDEF(dwarf_entrypc) diff --git a/libdw/dwarf_formstring.c b/libdw/dwarf_formstring.c index c3e892a82f6abc90274eb19e76a7d0504920daf7..0ee42411b44ee0d24cacda789c2dbdd5d37f9c70 100644 --- a/libdw/dwarf_formstring.c +++ b/libdw/dwarf_formstring.c @@ -61,6 +61,9 @@ dwarf_formstring (Dwarf_Attribute *attrp) Elf_Data *data = ((attrp->form == DW_FORM_line_strp) ? dbg_ret->sectiondata[IDX_debug_line_str] : dbg_ret->sectiondata[IDX_debug_str]); + size_t data_size = ((attrp->form == DW_FORM_line_strp) + ? dbg_ret->string_section_size[STR_SCN_IDX_debug_line_str] + : dbg_ret->string_section_size[STR_SCN_IDX_debug_str]); if (data == NULL) { __libdw_seterrno ((attrp->form == DW_FORM_line_strp) @@ -171,7 +174,7 @@ dwarf_formstring (Dwarf_Attribute *attrp) else off = read_8ubyte_unaligned (dbg, datap); - if (off > dbg->sectiondata[IDX_debug_str]->d_size) + if (off >= data_size) goto invalid_offset; } diff --git a/libdw/dwarf_frame_register.c b/libdw/dwarf_frame_register.c index bcf3fa03045910e040c56226972d06bfaea2f0f6..a6b7c4c1a373d4b657305df6b43d23f2d9b20d66 100644 --- a/libdw/dwarf_frame_register.c +++ b/libdw/dwarf_frame_register.c @@ -100,6 +100,11 @@ dwarf_frame_register (Dwarf_Frame *fs, int regno, Dwarf_Op ops_mem[3], const uint8_t *p = fs->cache->data->d.d_buf + reg->value; const uint8_t *end = (fs->cache->data->d.d_buf + fs->cache->data->d.d_size); + if (p >= end) + { + __libdw_seterrno (DWARF_E_INVALID_DWARF); + return -1; + } get_uleb128 (block.length, p, end); block.data = (void *) p; diff --git a/libdw/dwarf_getabbrev.c b/libdw/dwarf_getabbrev.c index 13bee493dfa4a5e7b738af9011d526ff724ae512..5b02333f34677e22c05dd899ae2295e33a1e04f2 100644 --- a/libdw/dwarf_getabbrev.c +++ b/libdw/dwarf_getabbrev.c @@ -77,6 +77,7 @@ __libdw_getabbrev (Dwarf *dbg, struct Dwarf_CU *cu, Dwarf_Off offset, + dbg->sectiondata[IDX_debug_abbrev]->d_size); const unsigned char *start_abbrevp = abbrevp; unsigned int code; + // We start off with abbrevp at offset, which is checked above. get_uleb128 (code, abbrevp, end); /* Check whether this code is already in the hash table. */ diff --git a/libdw/dwarf_getaranges.c b/libdw/dwarf_getaranges.c index de5b81baa21080503fc93f77cc5bd9fb0f6ceaa0..27439d37212c25dc48cdc06597c1bab2866ef346 100644 --- a/libdw/dwarf_getaranges.c +++ b/libdw/dwarf_getaranges.c @@ -1,5 +1,6 @@ /* Return list address ranges. Copyright (C) 2000-2010, 2016, 2017 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. Written by Ulrich Drepper , 2000. @@ -124,6 +125,10 @@ dwarf_getaranges (Dwarf *dbg, Dwarf_Aranges **aranges, size_t *naranges) && length <= DWARF3_LENGTH_MAX_ESCAPE_CODE)) goto invalid; + const unsigned char *endp = readp + length; + if (unlikely (endp > readendp)) + goto invalid; + if (unlikely (readp + 2 > readendp)) goto invalid; @@ -182,9 +187,17 @@ dwarf_getaranges (Dwarf *dbg, Dwarf_Aranges **aranges, size_t *naranges) else range_length = read_8ubyte_unaligned_inc (dbg, readp); - /* Two zero values mark the end. */ + /* Two zero values mark the end. But in some cases (bugs) + there might be such entries in the middle of the table. + Ignore and continue, we'll check the actual length of + the table to see if we are really at the end. */ if (range_address == 0 && range_length == 0) - break; + { + if (readp >= endp) + break; + else + continue; + } /* We don't use alloca for these temporary structures because the total number of them can be quite large. */ diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c index d0d7816319695f816ae41adbf86ff954d072eff2..553fdc986427dc253ab2a99293d3682c9fe551ac 100644 --- a/libdw/dwarf_getlocation.c +++ b/libdw/dwarf_getlocation.c @@ -396,6 +396,7 @@ __libdw_intern_expression (Dwarf *dbg, bool other_byte_order, case DW_OP_form_tls_address: case DW_OP_GNU_push_tls_address: case DW_OP_stack_value: + case DW_OP_GNU_uninit: /* No operand. */ break; diff --git a/libdw/dwarf_getmacros.c b/libdw/dwarf_getmacros.c index fd9296691fee9f02726c9c2986074f56bf51debd..a3a78884e06ffb58e8ca02e65faadfcd8332dbdb 100644 --- a/libdw/dwarf_getmacros.c +++ b/libdw/dwarf_getmacros.c @@ -124,17 +124,24 @@ get_macinfo_table (Dwarf *dbg, Dwarf_Word macoff, Dwarf_Die *cudie) = INTUSE(dwarf_attr) (cudie, DW_AT_stmt_list, &attr_mem); Dwarf_Off line_offset = (Dwarf_Off) -1; if (attr != NULL) - if (unlikely (INTUSE(dwarf_formudata) (attr, &line_offset) != 0)) - return NULL; + { + if (unlikely (INTUSE(dwarf_formudata) (attr, &line_offset) != 0)) + return NULL; + } + else if (cudie->cu->unit_type == DW_UT_split_compile + && dbg->sectiondata[IDX_debug_line] != NULL) + line_offset = 0; Dwarf_Macro_Op_Table *table = libdw_alloc (dbg, Dwarf_Macro_Op_Table, macinfo_data_size, 1); memcpy (table, macinfo_data, macinfo_data_size); + table->dbg = dbg; table->offset = macoff; table->sec_index = IDX_debug_macinfo; table->line_offset = line_offset; - table->is_64bit = cudie->cu->address_size == 8; + table->address_size = cudie->cu->address_size; + table->offset_size = cudie->cu->offset_size; table->comp_dir = __libdw_getcompdir (cudie); return table; @@ -182,6 +189,15 @@ get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff, return NULL; } + uint8_t address_size; + if (cudie != NULL) + address_size = cudie->cu->address_size; + else + { + char *ident = elf_getident (dbg->elf, NULL); + address_size = ident[EI_CLASS] == ELFCLASS32 ? 4 : 8; + } + /* """The macinfo entry types defined in this standard may, but might not, be described in the table""". @@ -253,12 +269,14 @@ get_table_for_offset (Dwarf *dbg, Dwarf_Word macoff, macop_table_size, 1); *table = (Dwarf_Macro_Op_Table) { + .dbg = dbg, .offset = macoff, .sec_index = IDX_debug_macro, .line_offset = line_offset, .header_len = readp - startp, .version = version, - .is_64bit = is_64bit, + .address_size = address_size, + .offset_size = is_64bit ? 8 : 4, /* NULL if CUDIE is NULL or DW_AT_comp_dir is absent. */ .comp_dir = __libdw_getcompdir (cudie), @@ -368,7 +386,7 @@ read_macros (Dwarf *dbg, int sec_index, .dbg = dbg, .sec_idx = sec_index, .version = table->version, - .offset_size = table->is_64bit ? 8 : 4, + .offset_size = table->offset_size, .str_off_base = str_offsets_base_off (dbg, (cudie != NULL ? cudie->cu: NULL)), .startp = (void *) startp + offset, diff --git a/libdw/dwarf_getscopes.c b/libdw/dwarf_getscopes.c index 5662eecf131ca09051b0bbe84b18500ed8211814..ce073b135d544f80e580ddf17287b481455a40cb 100644 --- a/libdw/dwarf_getscopes.c +++ b/libdw/dwarf_getscopes.c @@ -1,5 +1,6 @@ /* Return scope DIEs containing PC address. Copyright (C) 2005, 2007, 2015 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -100,7 +101,7 @@ origin_match (unsigned int depth, struct Dwarf_Die_Chain *die, void *arg) Dwarf_Die *scopes = realloc (a->scopes, nscopes * sizeof scopes[0]); if (scopes == NULL) { - free (a->scopes); + /* a->scopes will be freed by dwarf_getscopes on error. */ __libdw_seterrno (DWARF_E_NOMEM); return -1; } @@ -173,12 +174,8 @@ pc_record (unsigned int depth, struct Dwarf_Die_Chain *die, void *arg) /* Not there yet. */ return 0; - /* Now we are in a scope that contains the concrete inlined instance. - Search it for the inline function's abstract definition. - If we don't find it, return to search the containing scope. - If we do find it, the nonzero return value will bail us out - of the postorder traversal. */ - return __libdw_visit_scopes (depth, die, NULL, &origin_match, NULL, a); + /* This is the innermost inline scope, we are done here. */ + return a->nscopes; } @@ -193,11 +190,18 @@ dwarf_getscopes (Dwarf_Die *cudie, Dwarf_Addr pc, Dwarf_Die **scopes) int result = __libdw_visit_scopes (0, &cu, NULL, &pc_match, &pc_record, &a); - if (result == 0 && a.scopes != NULL) - result = __libdw_visit_scopes (0, &cu, NULL, &origin_match, NULL, &a); + if (result >= 0 && a.scopes != NULL && a.inlined > 0) + { + /* We like the find the inline function's abstract definition + scope, but that might be in a different CU. */ + cu.die = CUDIE (a.inlined_origin.cu); + result = __libdw_visit_scopes (0, &cu, NULL, &origin_match, NULL, &a); + } if (result > 0) *scopes = a.scopes; + else if (result < 0) + free (a.scopes); return result; } diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c index 2c1d7a407a078e50187481eae720da9bf887a587..69e10c7b13e4a7e9cab09f3a0dd90648dff7e93a 100644 --- a/libdw/dwarf_getsrclines.c +++ b/libdw/dwarf_getsrclines.c @@ -129,6 +129,12 @@ add_new_line (struct line_state *state, struct linelist *new_line) return true; \ } while (0) + /* Same as above, but don't flag as "invalid" just use truncated + value. Used for discriminator for which llvm might use a value + that won't fit 24 bits. */ +#define SETX(field) \ + new_line->line.field = state->field; \ + SET (addr); SET (op_index); SET (file); @@ -140,7 +146,7 @@ add_new_line (struct line_state *state, struct linelist *new_line) SET (prologue_end); SET (epilogue_begin); SET (isa); - SET (discriminator); + SETX (discriminator); SET (context); SET (function_name); @@ -572,6 +578,8 @@ read_srclines (Dwarf *dbg, goto invalid_data; size_t nfiles; + if ((size_t) (lineendp - linep) < 1) + goto invalid_data; get_uleb128 (nfiles, linep, lineendp); if (nforms == 0 && nfiles != 0) diff --git a/libdw/dwarf_macro_getsrcfiles.c b/libdw/dwarf_macro_getsrcfiles.c index 3b1794b112f3061ee9271a5cefb7dfbb2afaadf7..11c587af0d2790af2b83d988ef8c5c4613f0715d 100644 --- a/libdw/dwarf_macro_getsrcfiles.c +++ b/libdw/dwarf_macro_getsrcfiles.c @@ -36,6 +36,9 @@ int dwarf_macro_getsrcfiles (Dwarf *dbg, Dwarf_Macro *macro, Dwarf_Files **files, size_t *nfiles) { + /* This was needed before Dwarf_Macro_Op_Table stored the Dwarf handle. */ + (void)dbg; + /* macro is declared NN */ Dwarf_Macro_Op_Table *const table = macro->table; if (table->files == NULL) @@ -71,9 +74,8 @@ dwarf_macro_getsrcfiles (Dwarf *dbg, Dwarf_Macro *macro, the same unit through dwarf_getsrcfiles, and the file names will be broken. */ - if (__libdw_getsrclines (dbg, line_offset, table->comp_dir, - table->is_64bit ? 8 : 4, - NULL, &table->files) < 0) + if (__libdw_getsrclines (table->dbg, line_offset, table->comp_dir, + table->address_size, NULL, &table->files) < 0) table->files = (void *) -1; } diff --git a/libdw/dwarf_macro_param2.c b/libdw/dwarf_macro_param2.c index cc902c9997e5a384a09b7521b7839eece9c3a80c..f12e6f9a4da81c59b8f83774159c5d30de5a2c46 100644 --- a/libdw/dwarf_macro_param2.c +++ b/libdw/dwarf_macro_param2.c @@ -44,12 +44,21 @@ dwarf_macro_param2 (Dwarf_Macro *macro, Dwarf_Word *paramp, const char **strp) if (dwarf_macro_param (macro, 1, ¶m) != 0) return -1; - if (param.form == DW_FORM_string - || param.form == DW_FORM_strp) + switch (param.form) { - *strp = dwarf_formstring (¶m); - return 0; + /* String forms allowed by libdw_valid_user_form. */ + case DW_FORM_line_strp: + case DW_FORM_string: + case DW_FORM_strp: + case DW_FORM_strp_sup: + case DW_FORM_strx: + case DW_FORM_strx1: + case DW_FORM_strx2: + case DW_FORM_strx3: + case DW_FORM_strx4: + *strp = dwarf_formstring (¶m); + return 0; + default: + return dwarf_formudata (¶m, paramp); } - else - return dwarf_formudata (¶m, paramp); } diff --git a/libdw/dwarf_next_cfi.c b/libdw/dwarf_next_cfi.c index 23b1688598329f0b770f0a8c9a841ea3f428e9bc..be08984f1a4375f88bf1c1246ac663c4502c094d 100644 --- a/libdw/dwarf_next_cfi.c +++ b/libdw/dwarf_next_cfi.c @@ -226,7 +226,7 @@ dwarf_next_cfi (const unsigned char e_ident[], if (sized_augmentation) { /* Skip FDE address encoding byte. */ - encoding = *bytes++; + bytes++; continue; } break; diff --git a/libdw/dwarf_ranges.c b/libdw/dwarf_ranges.c index 520f9ffe6f200614bb41f84393d2bebe9a55c6ed..b853e4b9d7cc51fd4ea25ea2868278abea0f2c5c 100644 --- a/libdw/dwarf_ranges.c +++ b/libdw/dwarf_ranges.c @@ -489,10 +489,10 @@ dwarf_ranges (Dwarf_Die *die, ptrdiff_t offset, Dwarf_Addr *basep, size_t secidx = (cu->version < 5 ? IDX_debug_ranges : IDX_debug_rnglists); const Elf_Data *d = cu->dbg->sectiondata[secidx]; - if (d == NULL && cu->unit_type == DW_UT_split_compile) + if (cu->unit_type == DW_UT_split_compile && (d == NULL || is_cudie (die))) { Dwarf_CU *skel = __libdw_find_split_unit (cu); - if (skel != NULL) + if (skel != NULL && skel->dbg->sectiondata[secidx] != NULL) { cu = skel; d = cu->dbg->sectiondata[secidx]; diff --git a/libdw/encoded-value.h b/libdw/encoded-value.h index f0df4cec3e2753d961c6ed832f57ac46a97ad1db..4566ef96e0c7a89d7e7f21a9c715c8b863ea5da2 100644 --- a/libdw/encoded-value.h +++ b/libdw/encoded-value.h @@ -32,7 +32,7 @@ #include #include #include "libdwP.h" -#include "../libelf/common.h" +#include "common.h" /* Returns zero if the value is omitted, the encoding is unknown or @@ -196,10 +196,14 @@ read_encoded_value (const Dwarf_CFI *cache, uint8_t encoding, break; case DW_EH_PE_uleb128: + if (*p >= endp) + goto invalid_data; get_uleb128 (value, *p, endp); break; case DW_EH_PE_sleb128: + if (*p >= endp) + goto invalid_data; get_sleb128 (value, *p, endp); break; diff --git a/libdw/fde.c b/libdw/fde.c index f5f6fbe14133b0cb36738e9c25a5cdfeaf3d9e8b..73d551b64d5af3d2ed85a56fdc4a6b72bfc6f046 100644 --- a/libdw/fde.c +++ b/libdw/fde.c @@ -104,9 +104,12 @@ intern_fde (Dwarf_CFI *cache, const Dwarf_FDE *entry) /* The CIE augmentation says the FDE has a DW_FORM_block before its actual instruction stream. */ Dwarf_Word len; + if (fde->instructions >= fde->instructions_end) + goto invalid; get_uleb128 (len, fde->instructions, fde->instructions_end); if ((Dwarf_Word) (fde->instructions_end - fde->instructions) < len) { + invalid: free (fde); __libdw_seterrno (DWARF_E_INVALID_DWARF); return NULL; diff --git a/libdw/frame-cache.c b/libdw/frame-cache.c index 5b6afb5d2e623ecab815fde13a04d9eb16c87fca..683f7f17ae9f881d7d21ac1a8507c826bd75b5bb 100644 --- a/libdw/frame-cache.c +++ b/libdw/frame-cache.c @@ -30,7 +30,7 @@ # include #endif -#include "../libebl/libebl.h" +#include "libebl.h" #include "cfi.h" #include #include diff --git a/libdw/known-dwarf.h b/libdw/known-dwarf.h new file mode 100644 index 0000000000000000000000000000000000000000..24dce447d5f80fffc99f894db9322211abd9cdd3 --- /dev/null +++ b/libdw/known-dwarf.h @@ -0,0 +1,795 @@ +/* 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_addr_base, DW_AT_GNU_addr_base) \ + 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_bias, DW_AT_GNU_bias) \ + 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_denominator, DW_AT_GNU_denominator) \ + DWARF_ONE_KNOWN_DW_AT (GNU_dwo_id, DW_AT_GNU_dwo_id) \ + DWARF_ONE_KNOWN_DW_AT (GNU_dwo_name, DW_AT_GNU_dwo_name) \ + DWARF_ONE_KNOWN_DW_AT (GNU_entry_view, DW_AT_GNU_entry_view) \ + 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_locviews, DW_AT_GNU_locviews) \ + DWARF_ONE_KNOWN_DW_AT (GNU_macros, DW_AT_GNU_macros) \ + DWARF_ONE_KNOWN_DW_AT (GNU_numerator, DW_AT_GNU_numerator) \ + 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_pubnames, DW_AT_GNU_pubnames) \ + DWARF_ONE_KNOWN_DW_AT (GNU_pubtypes, DW_AT_GNU_pubtypes) \ + DWARF_ONE_KNOWN_DW_AT (GNU_ranges_base, DW_AT_GNU_ranges_base) \ + 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 (addr_base, DW_AT_addr_base) \ + DWARF_ONE_KNOWN_DW_AT (address_class, DW_AT_address_class) \ + DWARF_ONE_KNOWN_DW_AT (alignment, DW_AT_alignment) \ + 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_all_calls, DW_AT_call_all_calls) \ + DWARF_ONE_KNOWN_DW_AT (call_all_source_calls, DW_AT_call_all_source_calls) \ + DWARF_ONE_KNOWN_DW_AT (call_all_tail_calls, DW_AT_call_all_tail_calls) \ + DWARF_ONE_KNOWN_DW_AT (call_column, DW_AT_call_column) \ + DWARF_ONE_KNOWN_DW_AT (call_data_location, DW_AT_call_data_location) \ + DWARF_ONE_KNOWN_DW_AT (call_data_value, DW_AT_call_data_value) \ + 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 (call_origin, DW_AT_call_origin) \ + DWARF_ONE_KNOWN_DW_AT (call_parameter, DW_AT_call_parameter) \ + DWARF_ONE_KNOWN_DW_AT (call_pc, DW_AT_call_pc) \ + DWARF_ONE_KNOWN_DW_AT (call_return_pc, DW_AT_call_return_pc) \ + DWARF_ONE_KNOWN_DW_AT (call_tail_call, DW_AT_call_tail_call) \ + DWARF_ONE_KNOWN_DW_AT (call_target, DW_AT_call_target) \ + DWARF_ONE_KNOWN_DW_AT (call_target_clobbered, DW_AT_call_target_clobbered) \ + DWARF_ONE_KNOWN_DW_AT (call_value, DW_AT_call_value) \ + 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 (defaulted, DW_AT_defaulted) \ + DWARF_ONE_KNOWN_DW_AT (deleted, DW_AT_deleted) \ + 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 (dwo_name, DW_AT_dwo_name) \ + 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 (export_symbols, DW_AT_export_symbols) \ + 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 (loclists_base, DW_AT_loclists_base) \ + 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 (macros, DW_AT_macros) \ + DWARF_ONE_KNOWN_DW_AT (main_subprogram, DW_AT_main_subprogram) \ + 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 (rank, DW_AT_rank) \ + DWARF_ONE_KNOWN_DW_AT (recursive, DW_AT_recursive) \ + DWARF_ONE_KNOWN_DW_AT (reference, DW_AT_reference) \ + DWARF_ONE_KNOWN_DW_AT (return_addr, DW_AT_return_addr) \ + DWARF_ONE_KNOWN_DW_AT (rnglists_base, DW_AT_rnglists_base) \ + DWARF_ONE_KNOWN_DW_AT (rvalue_reference, DW_AT_rvalue_reference) \ + 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 (str_offsets_base, DW_AT_str_offsets_base) \ + DWARF_ONE_KNOWN_DW_AT (string_length, DW_AT_string_length) \ + DWARF_ONE_KNOWN_DW_AT (string_length_bit_size, DW_AT_string_length_bit_size) \ + DWARF_ONE_KNOWN_DW_AT (string_length_byte_size, DW_AT_string_length_byte_size) \ + 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 (ASCII, DW_ATE_ASCII) \ + DWARF_ONE_KNOWN_DW_ATE (UCS, DW_ATE_UCS) \ + 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 (pass_by_reference, DW_CC_pass_by_reference) \ + DWARF_ONE_KNOWN_DW_CC (pass_by_value, DW_CC_pass_by_value) \ + DWARF_ONE_KNOWN_DW_CC (program, DW_CC_program) \ + /* End of DW_CC_*. */ + +#define DWARF_ALL_KNOWN_DW_CFA \ + DWARF_ONE_KNOWN_DW_CFA (AARCH64_negate_ra_state, DW_CFA_AARCH64_negate_ra_state) \ + 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_DEFAULTED \ + DWARF_ONE_KNOWN_DW_DEFAULTED (in_class, DW_DEFAULTED_in_class) \ + DWARF_ONE_KNOWN_DW_DEFAULTED (no, DW_DEFAULTED_no) \ + DWARF_ONE_KNOWN_DW_DEFAULTED (out_of_class, DW_DEFAULTED_out_of_class) \ + /* End of DW_DEFAULTED_*. */ + +#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_addr_index, DW_FORM_GNU_addr_index) \ + DWARF_ONE_KNOWN_DW_FORM (GNU_ref_alt, DW_FORM_GNU_ref_alt) \ + DWARF_ONE_KNOWN_DW_FORM (GNU_str_index, DW_FORM_GNU_str_index) \ + 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 (addrx, DW_FORM_addrx) \ + DWARF_ONE_KNOWN_DW_FORM (addrx1, DW_FORM_addrx1) \ + DWARF_ONE_KNOWN_DW_FORM (addrx2, DW_FORM_addrx2) \ + DWARF_ONE_KNOWN_DW_FORM (addrx3, DW_FORM_addrx3) \ + DWARF_ONE_KNOWN_DW_FORM (addrx4, DW_FORM_addrx4) \ + 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 (data16, DW_FORM_data16) \ + 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 (implicit_const, DW_FORM_implicit_const) \ + DWARF_ONE_KNOWN_DW_FORM (indirect, DW_FORM_indirect) \ + DWARF_ONE_KNOWN_DW_FORM (line_strp, DW_FORM_line_strp) \ + DWARF_ONE_KNOWN_DW_FORM (loclistx, DW_FORM_loclistx) \ + 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_sup4, DW_FORM_ref_sup4) \ + DWARF_ONE_KNOWN_DW_FORM (ref_sup8, DW_FORM_ref_sup8) \ + DWARF_ONE_KNOWN_DW_FORM (ref_udata, DW_FORM_ref_udata) \ + DWARF_ONE_KNOWN_DW_FORM (rnglistx, DW_FORM_rnglistx) \ + 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 (strp_sup, DW_FORM_strp_sup) \ + DWARF_ONE_KNOWN_DW_FORM (strx, DW_FORM_strx) \ + DWARF_ONE_KNOWN_DW_FORM (strx1, DW_FORM_strx1) \ + DWARF_ONE_KNOWN_DW_FORM (strx2, DW_FORM_strx2) \ + DWARF_ONE_KNOWN_DW_FORM (strx3, DW_FORM_strx3) \ + DWARF_ONE_KNOWN_DW_FORM (strx4, DW_FORM_strx4) \ + 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 (BLISS, DW_LANG_BLISS) \ + 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_03, DW_LANG_C_plus_plus_03) \ + 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 (Dylan, DW_LANG_Dylan) \ + 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 (Julia, DW_LANG_Julia) \ + 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 (Modula3, DW_LANG_Modula3) \ + DWARF_ONE_KNOWN_DW_LANG (OCaml, DW_LANG_OCaml) \ + 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 (OpenCL, DW_LANG_OpenCL) \ + DWARF_ONE_KNOWN_DW_LANG (PLI, DW_LANG_PLI) \ + DWARF_ONE_KNOWN_DW_LANG (Pascal83, DW_LANG_Pascal83) \ + DWARF_ONE_KNOWN_DW_LANG (Python, DW_LANG_Python) \ + DWARF_ONE_KNOWN_DW_LANG (RenderScript, DW_LANG_RenderScript) \ + DWARF_ONE_KNOWN_DW_LANG (Rust, DW_LANG_Rust) \ + DWARF_ONE_KNOWN_DW_LANG (Swift, DW_LANG_Swift) \ + DWARF_ONE_KNOWN_DW_LANG (UPC, DW_LANG_UPC) \ + /* End of DW_LANG_*. */ + +#define DWARF_ALL_KNOWN_DW_LLE \ + DWARF_ONE_KNOWN_DW_LLE (base_address, DW_LLE_base_address) \ + DWARF_ONE_KNOWN_DW_LLE (base_addressx, DW_LLE_base_addressx) \ + DWARF_ONE_KNOWN_DW_LLE (default_location, DW_LLE_default_location) \ + DWARF_ONE_KNOWN_DW_LLE (end_of_list, DW_LLE_end_of_list) \ + DWARF_ONE_KNOWN_DW_LLE (offset_pair, DW_LLE_offset_pair) \ + DWARF_ONE_KNOWN_DW_LLE (start_end, DW_LLE_start_end) \ + DWARF_ONE_KNOWN_DW_LLE (start_length, DW_LLE_start_length) \ + DWARF_ONE_KNOWN_DW_LLE (startx_endx, DW_LLE_startx_endx) \ + DWARF_ONE_KNOWN_DW_LLE (startx_length, DW_LLE_startx_length) \ + /* End of DW_LLE_*. */ + +#define DWARF_ALL_KNOWN_DW_LLE_GNU \ + DWARF_ONE_KNOWN_DW_LLE_GNU (base_address_selection_entry, DW_LLE_GNU_base_address_selection_entry) \ + DWARF_ONE_KNOWN_DW_LLE_GNU (end_of_list_entry, DW_LLE_GNU_end_of_list_entry) \ + DWARF_ONE_KNOWN_DW_LLE_GNU (start_end_entry, DW_LLE_GNU_start_end_entry) \ + DWARF_ONE_KNOWN_DW_LLE_GNU (start_length_entry, DW_LLE_GNU_start_length_entry) \ + DWARF_ONE_KNOWN_DW_LLE_GNU (view_pair, DW_LLE_GNU_view_pair) \ + /* End of DW_LLE_GNU_*. */ + +#define DWARF_ALL_KNOWN_DW_LNCT \ + DWARF_ONE_KNOWN_DW_LNCT (MD5, DW_LNCT_MD5) \ + DWARF_ONE_KNOWN_DW_LNCT (directory_index, DW_LNCT_directory_index) \ + DWARF_ONE_KNOWN_DW_LNCT (path, DW_LNCT_path) \ + DWARF_ONE_KNOWN_DW_LNCT (size, DW_LNCT_size) \ + DWARF_ONE_KNOWN_DW_LNCT (timestamp, DW_LNCT_timestamp) \ + /* End of DW_LNCT_*. */ + +#define DWARF_ALL_KNOWN_DW_LNE \ + DWARF_ONE_KNOWN_DW_LNE (NVIDIA_inlined_call, DW_LNE_NVIDIA_inlined_call) \ + DWARF_ONE_KNOWN_DW_LNE (NVIDIA_set_function_name, DW_LNE_NVIDIA_set_function_name) \ + 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 \ + DWARF_ONE_KNOWN_DW_MACRO (define, DW_MACRO_define) \ + DWARF_ONE_KNOWN_DW_MACRO (define_strp, DW_MACRO_define_strp) \ + DWARF_ONE_KNOWN_DW_MACRO (define_strx, DW_MACRO_define_strx) \ + DWARF_ONE_KNOWN_DW_MACRO (define_sup, DW_MACRO_define_sup) \ + DWARF_ONE_KNOWN_DW_MACRO (end_file, DW_MACRO_end_file) \ + DWARF_ONE_KNOWN_DW_MACRO (import, DW_MACRO_import) \ + DWARF_ONE_KNOWN_DW_MACRO (import_sup, DW_MACRO_import_sup) \ + DWARF_ONE_KNOWN_DW_MACRO (start_file, DW_MACRO_start_file) \ + DWARF_ONE_KNOWN_DW_MACRO (undef, DW_MACRO_undef) \ + DWARF_ONE_KNOWN_DW_MACRO (undef_strp, DW_MACRO_undef_strp) \ + DWARF_ONE_KNOWN_DW_MACRO (undef_strx, DW_MACRO_undef_strx) \ + DWARF_ONE_KNOWN_DW_MACRO (undef_sup, DW_MACRO_undef_sup) \ + /* End of DW_MACRO_*. */ + +#define DWARF_ALL_KNOWN_DW_OP \ + DWARF_ONE_KNOWN_DW_OP (GNU_addr_index, DW_OP_GNU_addr_index) \ + DWARF_ONE_KNOWN_DW_OP (GNU_const_index, DW_OP_GNU_const_index) \ + 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 (GNU_variable_value, DW_OP_GNU_variable_value) \ + DWARF_ONE_KNOWN_DW_OP (abs, DW_OP_abs) \ + DWARF_ONE_KNOWN_DW_OP (addr, DW_OP_addr) \ + DWARF_ONE_KNOWN_DW_OP (addrx, DW_OP_addrx) \ + 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 (const_type, DW_OP_const_type) \ + DWARF_ONE_KNOWN_DW_OP (consts, DW_OP_consts) \ + DWARF_ONE_KNOWN_DW_OP (constu, DW_OP_constu) \ + DWARF_ONE_KNOWN_DW_OP (constx, DW_OP_constx) \ + DWARF_ONE_KNOWN_DW_OP (convert, DW_OP_convert) \ + 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 (deref_type, DW_OP_deref_type) \ + 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 (entry_value, DW_OP_entry_value) \ + 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_pointer, DW_OP_implicit_pointer) \ + 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 (regval_type, DW_OP_regval_type) \ + DWARF_ONE_KNOWN_DW_OP (regx, DW_OP_regx) \ + DWARF_ONE_KNOWN_DW_OP (reinterpret, DW_OP_reinterpret) \ + 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 (xderef_type, DW_OP_xderef_type) \ + 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_RLE \ + DWARF_ONE_KNOWN_DW_RLE (base_address, DW_RLE_base_address) \ + DWARF_ONE_KNOWN_DW_RLE (base_addressx, DW_RLE_base_addressx) \ + DWARF_ONE_KNOWN_DW_RLE (end_of_list, DW_RLE_end_of_list) \ + DWARF_ONE_KNOWN_DW_RLE (offset_pair, DW_RLE_offset_pair) \ + DWARF_ONE_KNOWN_DW_RLE (start_end, DW_RLE_start_end) \ + DWARF_ONE_KNOWN_DW_RLE (start_length, DW_RLE_start_length) \ + DWARF_ONE_KNOWN_DW_RLE (startx_endx, DW_RLE_startx_endx) \ + DWARF_ONE_KNOWN_DW_RLE (startx_length, DW_RLE_startx_length) \ + /* End of DW_RLE_*. */ + +#define DWARF_ALL_KNOWN_DW_SECT_INFO \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + DWARF_ONE_KNOWN_DW_SECT_INFO (, DW_SECT_INFO_) \ + /* End of DW_SECT_INFO_*. */ + +#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 (call_site, DW_TAG_call_site) \ + DWARF_ONE_KNOWN_DW_TAG (call_site_parameter, DW_TAG_call_site_parameter) \ + 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 (coarray_type, DW_TAG_coarray_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 (dynamic_type, DW_TAG_dynamic_type) \ + 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 (generic_subrange, DW_TAG_generic_subrange) \ + DWARF_ONE_KNOWN_DW_TAG (immutable_type, DW_TAG_immutable_type) \ + 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 (skeleton_unit, DW_TAG_skeleton_unit) \ + 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_UT \ + DWARF_ONE_KNOWN_DW_UT (compile, DW_UT_compile) \ + DWARF_ONE_KNOWN_DW_UT (partial, DW_UT_partial) \ + DWARF_ONE_KNOWN_DW_UT (skeleton, DW_UT_skeleton) \ + DWARF_ONE_KNOWN_DW_UT (split_compile, DW_UT_split_compile) \ + DWARF_ONE_KNOWN_DW_UT (split_type, DW_UT_split_type) \ + DWARF_ONE_KNOWN_DW_UT (type, DW_UT_type) \ + /* End of DW_UT_*. */ + +#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/libdwP.h b/libdw/libdwP.h index 961fa4e7f917370530ff58aadc47fbf9bb5efcbd..aef42267e7f9526ca7c369a0f135ceeb0703d89d 100644 --- a/libdw/libdwP.h +++ b/libdw/libdwP.h @@ -82,10 +82,19 @@ enum IDX_debug_macro, IDX_debug_ranges, IDX_debug_rnglists, + IDX_debug_cu_index, + IDX_debug_tu_index, IDX_gnu_debugaltlink, IDX_last }; +/* Valid indices for the string section's information. */ +enum string_section_index + { + STR_SCN_IDX_debug_line_str, + STR_SCN_IDX_debug_str, + STR_SCN_IDX_last + }; /* Error values. */ enum @@ -159,6 +168,10 @@ struct Dwarf /* The underlying ELF file. */ Elf *elf; + /* The (absolute) path to the ELF file, if known. To help locating + dwp files. */ + char *elfpath; + /* The (absolute) path to the ELF dir, if known. To help locating alt and dwo files. */ char *debugdir; @@ -169,6 +182,10 @@ struct Dwarf /* The section data. */ Elf_Data *sectiondata[IDX_last]; + /* Size of a prefix of string sections, where any string will be + null-terminated. */ + size_t string_section_size[STR_SCN_IDX_last]; + /* True if the file has a byte order different from the host. */ bool other_byte_order; @@ -497,6 +514,8 @@ typedef struct /* Prototype table. */ typedef struct { + Dwarf *dbg; + /* Offset of .debug_macro section. */ Dwarf_Off offset; @@ -515,7 +534,8 @@ typedef struct Dwarf_Half header_len; uint16_t version; - bool is_64bit; + uint8_t address_size; + uint8_t offset_size; uint8_t sec_index; /* IDX_debug_macro or IDX_debug_macinfo. */ /* Shows where in TABLE each opcode is defined. Since opcode 0 is @@ -1334,9 +1354,13 @@ __libdw_link_skel_split (Dwarf_CU *skel, Dwarf_CU *split) int __libdw_addrx (Dwarf_CU *cu, Dwarf_Word idx, Dwarf_Addr *addr); -/* Helper function to set debugdir field in Dwarf, used from dwarf_begin_elf +/* Helper function to set elfpath field in Dwarf, used from dwarf_begin_elf and libdwfl process_file. */ -char * __libdw_debugdir (int fd); +char * __libdw_elfpath (int fd); + +/* Helper function to set debugdir field in Dwarf after elfpath field has been + set. */ +void __libdw_set_debugdir (Dwarf *dbg); /* Given the directory of a debug file, an absolute or relative dir diff --git a/libdw/libdw_find_split_unit.c b/libdw/libdw_find_split_unit.c index a22e7bc90b23614bedcd982f248082c0d14c0c57..533f807296f12af61e6e49607e99febf64be0578 100644 --- a/libdw/libdw_find_split_unit.c +++ b/libdw/libdw_find_split_unit.c @@ -41,7 +41,7 @@ #include #include -void +static void try_split_file (Dwarf_CU *cu, const char *dwo_path) { int split_fd = open (dwo_path, O_RDONLY); diff --git a/libdw/libdw_form.c b/libdw/libdw_form.c index c83dfb397f5c3780041ac4ff68cd6d660b1a3fdf..400454401b66ce298b8bdab643b14798eb6f0a56 100644 --- a/libdw/libdw_form.c +++ b/libdw/libdw_form.c @@ -88,6 +88,8 @@ __libdw_form_val_compute_len (struct Dwarf_CU *cu, unsigned int form, case DW_FORM_block: case DW_FORM_exprloc: + if (valp >= endp) + goto invalid; get_uleb128 (u128, valp, endp); result = u128 + (valp - startp); break; @@ -111,6 +113,8 @@ __libdw_form_val_compute_len (struct Dwarf_CU *cu, unsigned int form, case DW_FORM_strx: case DW_FORM_GNU_addr_index: case DW_FORM_GNU_str_index: + if (valp >= endp) + goto invalid; get_uleb128 (u128, valp, endp); result = valp - startp; break; @@ -119,6 +123,8 @@ __libdw_form_val_compute_len (struct Dwarf_CU *cu, unsigned int form, /* The amount of data to skip in the DIE is the size of the actual FORM data (which is __libdw_form_val_len) plus the size of the uleb128 encoding that FORM (which is valp - startp). */ + if (valp >= endp) + goto invalid; get_uleb128 (u128, valp, endp); if (*valp == DW_FORM_indirect || *valp == DW_FORM_implicit_const) return (size_t) -1; diff --git a/libdw/memory-access.h b/libdw/memory-access.h index 16c8c851783a25a28f20b93a99d3d506a0e51eff..6d79343c9acc5f7a83364b7d71b5589a7a89ab1c 100644 --- a/libdw/memory-access.h +++ b/libdw/memory-access.h @@ -64,7 +64,7 @@ __libdw_max_len_sleb128 (const unsigned char *addr, const unsigned char *end) #define get_uleb128_step(var, addr, nth) \ do { \ unsigned char __b = *(addr)++; \ - (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7); \ + (var) |= (__typeof (var)) (__b & 0x7f) << ((nth) * 7); \ if (likely ((__b & 0x80) == 0)) \ return (var); \ } while (0) @@ -72,13 +72,16 @@ __libdw_max_len_sleb128 (const unsigned char *addr, const unsigned char *end) static inline uint64_t __libdw_get_uleb128 (const unsigned char **addrp, const unsigned char *end) { + const size_t max = __libdw_max_len_uleb128 (*addrp, end); + if (unlikely (max == 0)) + return UINT64_MAX; + uint64_t acc = 0; /* Unroll the first step to help the compiler optimize for the common single-byte case. */ get_uleb128_step (acc, *addrp, 0); - const size_t max = __libdw_max_len_uleb128 (*addrp - 1, end); for (size_t i = 1; i < max; ++i) get_uleb128_step (acc, *addrp, i); /* Other implementations set VALUE to UINT_MAX in this @@ -112,11 +115,11 @@ __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); \ + (var) |= (__typeof (var)) (__b & 0x7f) << ((nth) * 7); \ if (likely ((__b & 0x80) == 0)) \ { \ if ((__b & 0x40) != 0) \ - (var) |= - ((typeof (var)) 1 << (((nth) + 1) * 7)); \ + (var) |= - ((__typeof (var)) 1 << (((nth) + 1) * 7)); \ return (var); \ } \ } while (0) @@ -124,6 +127,10 @@ __libdw_get_uleb128_unchecked (const unsigned char **addrp) static inline int64_t __libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end) { + const size_t max = __libdw_max_len_sleb128 (*addrp, end); + if (unlikely (max == 0)) + return INT64_MAX; + /* 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. */ @@ -133,7 +140,6 @@ __libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end) for the common single-byte case. */ get_sleb128_step (acc, *addrp, 0); - 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) @@ -146,7 +152,7 @@ __libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end) { /* 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; + acc |= ((__typeof (acc)) b) << 7 * max; return acc; } @@ -179,7 +185,7 @@ __libdw_get_sleb128_unchecked (const unsigned char **addrp) { /* 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; + acc |= ((__typeof (acc)) b) << 7 * max; return acc; } diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog index 5d61aa85d5a9aca3987c70a8f12972d65aebe01e..1940629f0ed41b1346d9a5867dd330fb84a0133b 100644 --- a/libdwelf/ChangeLog +++ b/libdwelf/ChangeLog @@ -1,3 +1,7 @@ +2022-12-20 Mark Wielaard + + * libdwelfP.h: Include libdwP.h. + 2022-10-21 Yonggang Luo * dwelf_elf_begin.c: Don't include unistd.h. diff --git a/libdwelf/libdwelfP.h b/libdwelf/libdwelfP.h index d83c759a7e510efcd3950ffaf19f47d1eb56ef0b..faaf1a20244d63e862cd65d6aee2003b15a6dd4d 100644 --- a/libdwelf/libdwelfP.h +++ b/libdwelf/libdwelfP.h @@ -30,7 +30,7 @@ #define _LIBDWELFP_H 1 #include -#include "../libdw/libdwP.h" /* We need its INTDECLs. */ +#include "libdwP.h" /* We need its INTDECLs. */ #include #include diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 6dd84a6f83f18d73ae64c8e5c42ea59137815324..abbf0dfe203e2293c59964fb6305a9b087dee0c2 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,58 @@ +2023-09-27 Omar Sandoval + * dwfl_module.c (__libdwfl_module_free): Free mod->elfpath instead of + mod->elfdir. + * dwfl_module_getdwarf.c (load_dw): Set mod->dw->elfpath and call + __libdw_set_debugdir instead of setting mod->dw->debugdir. + * libdwflP.h (Dwfl_Module): Replace elfdir with elfpath. + * offline.c (process_elf): Call __libdw_elfpath and set mod->elfpath + instead of mod->elfdir. + +2023-04-24 John Gallagher + + * gzip.c: Fix memory leak in unzip() + +2023-02-06 Mark Wielaard + + * libdwfl.h: Guard debuginfod_client typedef with + _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF. + +2022-12-21 Mark Wielaard + + * core-file.c: Don't undef _. + * dwfl_segment_report_module.c: Likewise. + * elf-from-memory.c: Likewise. + * open.c: Likewise. + +2022-12-20 Mark Wielaard + + * Makefile.am (AM_CPPFLAGS): debuginfod.h is in builddir. + * core-file.c: Include libelfP.h. + * cu.c: Include libdwP.h and memory-access.h. + * debuginfod-client.c: Include debuginfod.h. + * dwfl_dwarf_line.c: Include libdwP.h. + * dwfl_lineinfo.c: Include libdwP.h. + * dwfl_module.c: Include cfi.h. + * dwfl_module_dwarf_cfi.c: Include cfi.h. + * dwfl_module_eh_cfi.c: Include cfi.h. + * dwfl_module_getdwarf.c: Include libdwP.h and libelfP.h. + * dwfl_module_getsrc.c: Include libdwP.h. + * dwfl_module_getsrc_file.c: Include libdwP.h. + * dwfl_segment_report_module.c: Include libelfP.h. + * elf-from-memory.c: Include libelfP.h. + * frame_unwind.c: Include dwarf.h. + * libdwflP.h: Include libdwP.h and libdwelfP.h. Don't include + debuginfod.h. + * lines.c: Include libdwP.h. + * link_map.c: Include memory-access.h. + * linux-core-attach.c: Include memory-access.h. + * open.c: Include libelfP.h. + +2022-11-28 Gavin Li + Mark Wielaard + + * dwfl_segment_report_module.c (dwfl_segment_report_module): Remove + data size check after read_portion memory_callback. + 2022-10-21 Yonggang Luo * argp-std.c: Don't include unistd.h. diff --git a/libdwfl/Makefile.am b/libdwfl/Makefile.am index 3278358d80271053bd9f7095ba2dbd0eeb803ce5..6b26cd515af28d3a72e19e51fad47a459dcd5484 100644 --- a/libdwfl/Makefile.am +++ b/libdwfl/Makefile.am @@ -31,7 +31,7 @@ ## include $(top_srcdir)/config/eu.am AM_CPPFLAGS += -I$(srcdir) -I$(srcdir)/../libelf -I$(srcdir)/../libebl \ - -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf -I$(srcdir)/../debuginfod + -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf -I$(builddir)/../debuginfod VERSION = 1 noinst_LIBRARIES = libdwfl.a diff --git a/libdwfl/core-file.c b/libdwfl/core-file.c index cd9b4f38814096c232954d738835708dd23b3bd0..87c940cb569d97cc6800044d51ddd72341bfdb70 100644 --- a/libdwfl/core-file.c +++ b/libdwfl/core-file.c @@ -28,8 +28,7 @@ not, see . */ #include -#include "../libelf/libelfP.h" /* For NOTE_ALIGN. */ -#undef _ +#include "libelfP.h" /* For NOTE_ALIGN. */ #include "libdwflP.h" #include diff --git a/libdwfl/cu.c b/libdwfl/cu.c index 4de66248bd2c8b00eae7c8add0bcb7acd006ac08..b1afb19a9623456c6538708f7b1434ea24d7ed21 100644 --- a/libdwfl/cu.c +++ b/libdwfl/cu.c @@ -31,8 +31,8 @@ #endif #include "libdwflP.h" -#include "../libdw/libdwP.h" -#include "../libdw/memory-access.h" +#include "libdwP.h" +#include "memory-access.h" #include diff --git a/libdwfl/debuginfod-client.c b/libdwfl/debuginfod-client.c index d581daabf4f800bb0adbe634c87d1a2d102009ab..882a5efff9bbc622c0fcce90c021b18530b341ec 100644 --- a/libdwfl/debuginfod-client.c +++ b/libdwfl/debuginfod-client.c @@ -35,6 +35,8 @@ #ifdef ENABLE_LIBDEBUGINFOD +#include "debuginfod.h" + #include #include diff --git a/libdwfl/dwfl_dwarf_line.c b/libdwfl/dwfl_dwarf_line.c index e22e984c5029f9e3c077fd382ae95234010930b3..5084c65908f8ef188ac4331f5bbe28cc96bf04c3 100644 --- a/libdwfl/dwfl_dwarf_line.c +++ b/libdwfl/dwfl_dwarf_line.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/libdwP.h" +#include "libdwP.h" Dwarf_Line * dwfl_dwarf_line (Dwfl_Line *line, Dwarf_Addr *bias) diff --git a/libdwfl/dwfl_lineinfo.c b/libdwfl/dwfl_lineinfo.c index 961871287822b96a9ea2d5b21525cc7275c40149..85c4b314da271e08ee411c79d2e896096e713904 100644 --- a/libdwfl/dwfl_lineinfo.c +++ b/libdwfl/dwfl_lineinfo.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/libdwP.h" +#include "libdwP.h" const char * dwfl_lineinfo (Dwfl_Line *line, Dwarf_Addr *addr, int *linep, int *colp, diff --git a/libdwfl/dwfl_module.c b/libdwfl/dwfl_module.c index 4fbff33ee55263efb5daaba64ec328714815ab41..c4d872d497f0c4ae09085eac6fa825a42dc50bb2 100644 --- a/libdwfl/dwfl_module.c +++ b/libdwfl/dwfl_module.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/cfi.h" +#include "cfi.h" #include static void @@ -119,7 +119,7 @@ __libdwfl_module_free (Dwfl_Module *mod) free (mod->reloc_info); free (mod->name); - free (mod->elfdir); + free (mod->elfpath); free (mod); } diff --git a/libdwfl/dwfl_module_dwarf_cfi.c b/libdwfl/dwfl_module_dwarf_cfi.c index 0e5b435615967acb0004eff7c64271541ab27f22..05a14f7c4e6a2386ab594b98198e4df5e60823c6 100644 --- a/libdwfl/dwfl_module_dwarf_cfi.c +++ b/libdwfl/dwfl_module_dwarf_cfi.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/cfi.h" +#include "cfi.h" Dwarf_CFI * internal_function diff --git a/libdwfl/dwfl_module_eh_cfi.c b/libdwfl/dwfl_module_eh_cfi.c index c296e399714860886ccd55ea7996ecbe4c0d67bd..aac6657d71138efdbb6fcbfefc300d411df0375d 100644 --- a/libdwfl/dwfl_module_eh_cfi.c +++ b/libdwfl/dwfl_module_eh_cfi.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/cfi.h" +#include "cfi.h" Dwarf_CFI * dwfl_module_eh_cfi (Dwfl_Module *mod, Dwarf_Addr *bias) diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c index 498c7cd205f4269ddcee2bde29788c6e0ebc524a..6f98c02b4f3fe675ec1ef4b3f677a542751a7b2a 100644 --- a/libdwfl/dwfl_module_getdwarf.c +++ b/libdwfl/dwfl_module_getdwarf.c @@ -34,8 +34,8 @@ #include #include #include -#include "../libdw/libdwP.h" /* DWARF_E_* values are here. */ -#include "../libelf/libelfP.h" +#include "libdwP.h" /* DWARF_E_* values are here. */ +#include "libelfP.h" #include "system.h" static inline Dwfl_Error @@ -1362,11 +1362,14 @@ load_dw (Dwfl_Module *mod, struct dwfl_file *debugfile) } /* We might have already closed the fd when we asked dwarf_begin_elf to - create an Dwarf. Help out a little in case we need to find an alt or - dwo file later. */ - if (mod->dw->debugdir == NULL && mod->elfdir != NULL + create an Dwarf. Help out a little in case we need to find an alt, + dwo, or dwp file later. */ + if (mod->dw->elfpath == NULL && mod->elfpath != NULL && debugfile == &mod->main) - mod->dw->debugdir = strdup (mod->elfdir); + { + mod->dw->elfpath = strdup (mod->elfpath); + __libdw_set_debugdir (mod->dw); + } /* Until we have iterated through all CU's, we might do lazy lookups. */ mod->lazycu = 1; diff --git a/libdwfl/dwfl_module_getsrc.c b/libdwfl/dwfl_module_getsrc.c index fc99b163ed48e923139e828acdd687f03c8fe637..73dbf43515ebe77d4629046d9d5d3ba4eea78aef 100644 --- a/libdwfl/dwfl_module_getsrc.c +++ b/libdwfl/dwfl_module_getsrc.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/libdwP.h" +#include "libdwP.h" Dwfl_Line * dwfl_module_getsrc (Dwfl_Module *mod, Dwarf_Addr addr) diff --git a/libdwfl/dwfl_module_getsrc_file.c b/libdwfl/dwfl_module_getsrc_file.c index cea2ba4145698f21bd365300bbe7bd890a768f52..513af6b8d067a22f3ccfd1c17a38ca96a3126e82 100644 --- a/libdwfl/dwfl_module_getsrc_file.c +++ b/libdwfl/dwfl_module_getsrc_file.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/libdwP.h" +#include "libdwP.h" static inline const char * diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index 287fc002d8d3fda7d9926f6b3e01760c4e2e7f66..3ef62a7db47a139f34c9b9bacc5a7effa15b645b 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -28,8 +28,7 @@ not, see . */ #include -#include "../libelf/libelfP.h" /* For NOTE_ALIGN4 and NOTE_ALIGN8. */ -#undef _ +#include "libelfP.h" /* For NOTE_ALIGN4 and NOTE_ALIGN8. */ #include "libdwflP.h" #include "common.h" @@ -441,17 +440,6 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, start + phoff, xlatefrom.d_size)) 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 - could be read. */ - if (ph_buffer_size != 0) - { - phnum = ph_buffer_size / phentsize; - if (phnum == 0) - goto out; - xlatefrom.d_size = ph_buffer_size; - } - xlatefrom.d_buf = ph_buffer; bool class32 = ei_class == ELFCLASS32; @@ -533,18 +521,12 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, /* 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; + void *data = NULL; + size_t data_size = 0; 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; - if (filesz > SIZE_MAX / sizeof (Elf32_Nhdr)) continue; @@ -821,12 +803,6 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, && ! 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 - could be read. */ - if (dyn_data_size != 0) - dyn_filesz = dyn_data_size; - if ((dyn_filesz / dyn_entsize) == 0 || dyn_filesz > (SIZE_MAX / dyn_entsize)) goto out; diff --git a/libdwfl/elf-from-memory.c b/libdwfl/elf-from-memory.c index a0ef00146c0eb21296a4c3a40561dbd01cfcc045..e9b330fd66df284cb9cd980fc5920c604e4c2c1e 100644 --- a/libdwfl/elf-from-memory.c +++ b/libdwfl/elf-from-memory.c @@ -27,8 +27,7 @@ not, see . */ #include -#include "../libelf/libelfP.h" -#undef _ +#include "libelfP.h" #include "libdwflP.h" diff --git a/libdwfl/frame_unwind.c b/libdwfl/frame_unwind.c index 8185d84b27619dd7a413dc5921e034070da72df0..1e2f02553298df693f3790b286dffffaea209049 100644 --- a/libdwfl/frame_unwind.c +++ b/libdwfl/frame_unwind.c @@ -33,7 +33,7 @@ #include "cfi.h" #include #include "libdwflP.h" -#include "../libdw/dwarf.h" +#include "dwarf.h" #include /* Maximum number of DWARF expression stack slots before returning an error. */ diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c index 53013be3cce440e3995051223f0e810888611f77..002afc4e916b91217072b51c218c7b4a16e8d50b 100644 --- a/libdwfl/gzip.c +++ b/libdwfl/gzip.c @@ -227,7 +227,7 @@ unzip (int fd, off_t start_offset, #endif ) /* Not a compressed file. */ - return DWFL_E_BADELF; + return fail (&state, DWFL_E_BADELF); #ifdef ZSTD /* special case for libzstd since it is slightly different from the diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h index 9114f7f05d81ad7b3d8288c00d296ca0b620f6e9..49ad6664899ea884348213520d40217159c867a5 100644 --- a/libdwfl/libdwfl.h +++ b/libdwfl/libdwfl.h @@ -50,7 +50,10 @@ typedef struct Dwfl_Thread Dwfl_Thread; typedef struct Dwfl_Frame Dwfl_Frame; /* Handle for debuginfod-client connection. */ +#ifndef _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF typedef struct debuginfod_client debuginfod_client; +#define _ELFUTILS_DEBUGINFOD_CLIENT_TYPEDEF 1 +#endif /* Callbacks. */ typedef struct diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h index 011b5de9bdb93db600e20fd6e1847e268c719c9e..b3dfea1d1b9aa4114c5ad58b01be261572221013 100644 --- a/libdwfl/libdwflP.h +++ b/libdwfl/libdwflP.h @@ -38,12 +38,8 @@ #include #include -#include "../libdw/libdwP.h" /* We need its INTDECLs. */ -#include "../libdwelf/libdwelfP.h" - -#ifdef ENABLE_LIBDEBUGINFOD -#include "../debuginfod/debuginfod.h" -#endif +#include "libdwP.h" /* We need its INTDECLs. */ +#include "libdwelfP.h" typedef struct Dwfl_Process Dwfl_Process; @@ -190,7 +186,7 @@ struct Dwfl_Module Elf_Data *symxndxdata; /* Data in the extended section index table. */ Elf_Data *aux_symxndxdata; /* Data in the extended auxiliary table. */ - char *elfdir; /* The dir where we found the main Elf. */ + char *elfpath; /* The path where we found the main Elf. */ Dwarf *dw; /* libdw handle for its debugging info. */ Dwarf *alt; /* Dwarf used for dwarf_setalt, or NULL. */ diff --git a/libdwfl/lines.c b/libdwfl/lines.c index 128c0c977e698af6ceebe514027abc07f6b0afaa..a7f3004affe09156bfd8850ae1275c3a4a8a716d 100644 --- a/libdwfl/lines.c +++ b/libdwfl/lines.c @@ -31,7 +31,7 @@ #endif #include "libdwflP.h" -#include "../libdw/libdwP.h" +#include "libdwP.h" Dwfl_Error internal_function diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c index 7ec7eca1e310ab69111aac2879f77846656b750c..76f2335462a7d493cdc8ba91371df969c97925ef 100644 --- a/libdwfl/link_map.c +++ b/libdwfl/link_map.c @@ -29,7 +29,7 @@ #include #include "libdwflP.h" -#include "../libdw/memory-access.h" +#include "memory-access.h" #include "system.h" #include @@ -331,11 +331,17 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, int result = 0; /* There can't be more elements in the link_map list than there are - segments. DWFL->lookup_elts is probably twice that number, so it - is certainly above the upper bound. If we iterate too many times, - there must be a loop in the pointers due to link_map clobberation. */ + segments. A segment is created for each PT_LOAD and there can be + up to 5 per module (-z separate-code, tends to create four LOAD + segments, gold has -z text-unlikely-segment, which might result + in creating that number of load segments) DWFL->lookup_elts is + probably twice the number of modules, so that multiplied by max + PT_LOADs is certainly above the upper bound. If we iterate too + many times, there must be a loop in the pointers due to link_map + clobberation. */ +#define MAX_PT_LOAD 5 size_t iterations = 0; - while (next != 0 && ++iterations < dwfl->lookup_elts) + while (next != 0 && ++iterations < dwfl->lookup_elts * MAX_PT_LOAD) { if (read_addrs (&memory_closure, elfclass, elfdata, &buffer, &buffer_available, next, &read_vaddr, diff --git a/libdwfl/linux-core-attach.c b/libdwfl/linux-core-attach.c index ee7afa400208c51f0fcc830b5676fed9372009a1..d6f9e97105037e3d9f57ff623b47aa0604b48a85 100644 --- a/libdwfl/linux-core-attach.c +++ b/libdwfl/linux-core-attach.c @@ -34,7 +34,7 @@ #include #include "system.h" -#include "../libdw/memory-access.h" +#include "memory-access.h" struct core_arg { diff --git a/libdwfl/offline.c b/libdwfl/offline.c index e090b42bb5136d06d0a005ecea0b2d873e4afbc2..e9ab0cc1d5c4f29d07bdbf32490ee927ccb9a093 100644 --- a/libdwfl/offline.c +++ b/libdwfl/offline.c @@ -50,10 +50,11 @@ dwfl_offline_section_address (Dwfl_Module *mod, const GElf_Shdr *shdr __attribute__ ((unused)), Dwarf_Addr *addr) { - assert (mod->e_type == ET_REL); - assert (shdr->sh_addr == 0); - assert (shdr->sh_flags & SHF_ALLOC); - assert (shndx != 0); + if (mod->e_type != ET_REL + || shdr->sh_addr != 0 + || !(shdr->sh_flags & SHF_ALLOC) + || shndx == 0) + return -1; if (mod->debug.elf == NULL) /* We are only here because sh_addr is zero even though layout is complete. @@ -151,9 +152,9 @@ process_elf (Dwfl *dwfl, const char *name, const char *file_name, int fd, /* Don't keep the file descriptor around. */ if (mod->main.fd != -1 && elf_cntl (mod->main.elf, ELF_C_FDREAD) == 0) { - /* Grab the dir path in case we want to report this file as + /* Grab the path in case we want to report this file as Dwarf later. */ - mod->elfdir = __libdw_debugdir (mod->main.fd); + mod->elfpath = __libdw_elfpath (mod->main.fd); close (mod->main.fd); mod->main.fd = -1; } diff --git a/libdwfl/open.c b/libdwfl/open.c index 68b755cd6b859bfa05fc4eddae4f17111c2c231f..d0f357eddcc8ff16fefdcb5e15b88e7910626290 100644 --- a/libdwfl/open.c +++ b/libdwfl/open.c @@ -31,8 +31,7 @@ # include #endif -#include "../libelf/libelfP.h" -#undef _ +#include "libelfP.h" #include "libdwflP.h" #if !USE_BZLIB @@ -206,12 +205,16 @@ __libdw_open_elf_memory (char *data, size_t size, Elf **elfp, bool archive_ok) { /* It is ok to use `fd == -1` here, because libelf uses it as a value for "no file opened" and code supports working with this value, and also - `never_close_fd == false` is passed to prevent closing non-existant file. + `never_close_fd == false` is passed to prevent closing non-existent file. The only caveat is in `decompress` method, which doesn't support decompressing from memory, so reading compressed zImage using this method won't work. */ int fd = -1; *elfp = elf_memory (data, size); + if (unlikely(*elfp == NULL)) + { + return DWFL_E_LIBELF; + } /* Allow using this ELF as reference for subsequent elf_begin calls. */ (*elfp)->cmd = ELF_C_READ_MMAP_PRIVATE; return libdw_open_elf (&fd, elfp, false, archive_ok, true, false, true); diff --git a/libebl/ChangeLog b/libebl/ChangeLog index 6f55a5e76ba9abc467d19873f67142591acf3c3f..519087dc2b1334f50e52413718792d41017cfe41 100644 --- a/libebl/ChangeLog +++ b/libebl/ChangeLog @@ -1,3 +1,12 @@ +2022-12-21 Shahab Vahedi + + * eblopenbackend.c (arc_init): New function declaration. + (machines): Add entry for arc. + +2022-12-02 Hengqi Chen + + * eblopenbackend.c (machines): Add entries for LoongArch. + 2022-10-21 Yonggang Luo * eblclosebackend.c: Remove dlfcn.h include. diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c index 02f80653068dd25874b914217ce69261c0e17e5a..084a1544b286c207f2f4cb4db92e70bdd6d3d636 100644 --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -55,6 +55,8 @@ 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 *); +Ebl *loongarch_init (Elf *, GElf_Half, Ebl *); +Ebl *arc_init (Elf *, GElf_Half, Ebl *); /* This table should contain the complete list of architectures as far as the ELF specification is concerned. */ @@ -150,6 +152,8 @@ static const struct { riscv_init, "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS64, ELFDATA2LSB }, { riscv_init, "elf_riscv", "riscv", 5, EM_RISCV, ELFCLASS32, ELFDATA2LSB }, { csky_init, "elf_csky", "csky", 4, EM_CSKY, ELFCLASS32, ELFDATA2LSB }, + { loongarch_init, "elf_loongarch", "loongarch", 9, EM_LOONGARCH, ELFCLASS64, ELFDATA2LSB }, + { arc_init, "elf_arc", "arc", 3, EM_ARCV2, ELFCLASS32, ELFDATA2LSB }, }; #define nmachines (sizeof (machines) / sizeof (machines[0])) diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c index 2008b95a41d1ba27c33ca78f0e54ff02d239af5c..ade25d4a570145acafbdba2d913d1babadadd54d 100644 --- a/libebl/eblsectiontypename.c +++ b/libebl/eblsectiontypename.c @@ -61,7 +61,8 @@ ebl_section_type_name (Ebl *ebl, int section, char *buf, size_t len) KNOWNSTYPE (FINI_ARRAY), KNOWNSTYPE (PREINIT_ARRAY), KNOWNSTYPE (GROUP), - KNOWNSTYPE (SYMTAB_SHNDX) + KNOWNSTYPE (SYMTAB_SHNDX), + KNOWNSTYPE (RELR) }; /* Handle standard names. */ diff --git a/libelf/ChangeLog b/libelf/ChangeLog index 8107c71ebd67138c3a7d295e02a95b67ffc4d580..0e314ab62b2ff399a584bf7e39060734ddaa0c7d 100644 --- a/libelf/ChangeLog +++ b/libelf/ChangeLog @@ -1,3 +1,24 @@ +2023-09-09 Yanglin Xun + + * libelf.h: Fix typo in comment + +2023-04-01 Youling Tang + + * elf.h: Update from glibc. + +2023-03-03 Mark Wielaard + + * libelf.h: Define ELFCOMPRESS_ZSTD if undefined. + (elf_compress): Document ELFCOMPRESS_ZSTD compression type. + +2023-02-20 Mark Wielaard + + * gnuhash_xlate.h (elf_cvt_gnuhash): memmove any left over bytes. + +2022-11-30 Mark Wielaard + + * elf.h: Update from glibc. + 2022-10-28 Mark Wielaard * elf.h: Update from glibc. diff --git a/libelf/Makefile.am b/libelf/Makefile.am index 560ed45f21bad440562662792ce5cede98c99424..3402863ef17466bd422cc0510c89c73410d25bab 100644 --- a/libelf/Makefile.am +++ b/libelf/Makefile.am @@ -41,7 +41,7 @@ include_HEADERS = libelf.h gelf.h nlist.h noinst_HEADERS = abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \ version_xlate.h gnuhash_xlate.h note_xlate.h dl-hash.h \ - chdr_xlate.h + chdr_xlate.h elf32_getchdr.h if INSTALL_ELFH include_HEADERS += elf.h @@ -106,7 +106,7 @@ libelf_pic_a_SOURCES = am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os) libelf_so_DEPS = ../lib/libeu.a -libelf_so_LDLIBS = $(libelf_so_DEPS) -lz +libelf_so_LDLIBS = $(libelf_so_DEPS) -lz $(zstd_LIBS) if USE_LOCKS libelf_so_LDLIBS += -lpthread endif @@ -115,7 +115,8 @@ libelf_so_LIBS = libelf_pic.a 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 \ + -Wl,--version-script,$< \ + $(NO_UNDEFINED) \ -Wl,--whole-archive $(libelf_so_LIBS) -Wl,--no-whole-archive \ $(libelf_so_LDLIBS) @$(textrel_check) diff --git a/libelf/elf.h b/libelf/elf.h index f51300bc8c04b8ed459149b18a695089a6e89196..7b4a8fe43eacc981a67ba151511b9663217b4535 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-2022 Free Software Foundation, Inc. + Copyright (C) 1995-2023 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 @@ -210,7 +210,7 @@ typedef struct #define EM_68HC12 53 /* Motorola M68HC12 */ #define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator */ #define EM_PCP 55 /* Siemens PCP */ -#define EM_NCPU 56 /* Sony nCPU embeeded RISC */ +#define EM_NCPU 56 /* Sony nCPU embedded RISC */ #define EM_NDR1 57 /* Denso NDR1 microprocessor */ #define EM_STARCORE 58 /* Motorola Start*Core processor */ #define EM_ME16 59 /* Toyota ME16 processor */ @@ -559,7 +559,7 @@ typedef struct /* Possible bitmasks for si_flags. */ #define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */ -#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */ +#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-through symbol for translator */ #define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */ #define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy loaded */ @@ -728,6 +728,7 @@ typedef struct #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_GNU_SFRAME 0x6474e554 /* SFrame segment. */ #define PT_LOSUNW 0x6ffffffa #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ @@ -1223,6 +1224,9 @@ typedef struct #define AT_HWCAP2 26 /* More machine-dependent hints about processor capabilities. */ +#define AT_RSEQ_FEATURE_SIZE 27 /* rseq supported feature size. */ +#define AT_RSEQ_ALIGN 28 /* rseq allocation alignment. */ + #define AT_EXECFN 31 /* Filename of executable. */ /* Pointer to the global system page used for system calls and other @@ -1681,11 +1685,25 @@ typedef struct #define EF_MIPS_PIC 2 /* Contains PIC code. */ #define EF_MIPS_CPIC 4 /* Uses PIC calling sequence. */ #define EF_MIPS_XGOT 8 -#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_UCODE 16 #define EF_MIPS_ABI2 32 #define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_OPTIONS_FIRST 0x00000080 /* Process the .MIPS.options + section first by ld. */ +#define EF_MIPS_32BITMODE 0x00000100 /* Indicates code compiled for + a 64-bit machine in 32-bit + mode (regs are 32-bits + wide). */ #define EF_MIPS_FP64 512 /* Uses FP64 (12 callee-saved). */ #define EF_MIPS_NAN2008 1024 /* Uses IEEE 754-2008 NaN encoding. */ +#define EF_MIPS_ARCH_ASE 0x0f000000 /* Architectural Extensions + used by this file. */ +#define EF_MIPS_ARCH_ASE_MDMX 0x08000000 /* Use MDMX multimedia + extensions. */ +#define EF_MIPS_ARCH_ASE_M16 0x04000000 /* Use MIPS-16 ISA + extensions. */ +#define EF_MIPS_ARCH_ASE_MICROMIPS 0x02000000 /* Use MICROMIPS ISA + extensions. */ #define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level. */ /* Legal values for MIPS architecture level. */ @@ -1699,6 +1717,38 @@ typedef struct #define EF_MIPS_ARCH_64 0x60000000 /* MIPS64 code. */ #define EF_MIPS_ARCH_32R2 0x70000000 /* MIPS32r2 code. */ #define EF_MIPS_ARCH_64R2 0x80000000 /* MIPS64r2 code. */ +#define EF_MIPS_ARCH_32R6 0x90000000 /* MIPS32r6 code. */ +#define EF_MIPS_ARCH_64R6 0xa0000000 /* MIPS64r6 code. */ +#define EF_MIPS_ABI 0x0000F000 /* The ABI of the file. Also + see EF_MIPS_ABI2 above. */ +#define EF_MIPS_ABI_O32 0x00001000 /* The original o32 abi. */ +#define EF_MIPS_ABI_O64 0x00002000 /* O32 extended to work on + 64 bit architectures. */ +#define EF_MIPS_ABI_EABI32 0x00003000 /* EABI in 32 bit mode. */ +#define EF_MIPS_ABI_EABI64 0x00004000 /* EABI in 64 bit mode. */ +#define EF_MIPS_MACH 0x00FF0000 +#define EF_MIPS_MACH_3900 0x00810000 +#define EF_MIPS_MACH_4010 0x00820000 +#define EF_MIPS_MACH_4100 0x00830000 +#define EF_MIPS_MACH_ALLEGREX 0x00840000 +#define EF_MIPS_MACH_4650 0x00850000 +#define EF_MIPS_MACH_4120 0x00870000 +#define EF_MIPS_MACH_4111 0x00880000 +#define EF_MIPS_MACH_SB1 0x008a0000 +#define EF_MIPS_MACH_OCTEON 0x008b0000 +#define EF_MIPS_MACH_XLR 0x008c0000 +#define EF_MIPS_MACH_OCTEON2 0x008d0000 +#define EF_MIPS_MACH_OCTEON3 0x008e0000 +#define EF_MIPS_MACH_5400 0x00910000 +#define EF_MIPS_MACH_5900 0x00920000 +#define EF_MIPS_MACH_IAMR2 0x00930000 +#define EF_MIPS_MACH_5500 0x00980000 +#define EF_MIPS_MACH_9000 0x00990000 +#define EF_MIPS_MACH_LS2E 0x00A00000 +#define EF_MIPS_MACH_LS2F 0x00A10000 +#define EF_MIPS_MACH_GS464 0x00A20000 +#define EF_MIPS_MACH_GS464E 0x00A30000 +#define EF_MIPS_MACH_GS264E 0x00A40000 /* The following are unofficial names and should not be used. */ @@ -1759,6 +1809,7 @@ typedef struct #define SHT_MIPS_EH_REGION 0x70000027 #define SHT_MIPS_XLATE_OLD 0x70000028 #define SHT_MIPS_PDR_EXCEPTION 0x70000029 +#define SHT_MIPS_ABIFLAGS 0x7000002a #define SHT_MIPS_XHASH 0x7000002b /* Legal values for sh_flags field of Elf32_Shdr. */ @@ -1927,10 +1978,68 @@ typedef struct #define R_MIPS_TLS_TPREL_HI16 49 /* TP-relative offset, high 16 bits */ #define R_MIPS_TLS_TPREL_LO16 50 /* TP-relative offset, low 16 bits */ #define R_MIPS_GLOB_DAT 51 +#define R_MIPS_PC21_S2 60 +#define R_MIPS_PC26_S2 61 +#define R_MIPS_PC18_S3 62 +#define R_MIPS_PC19_S2 63 +#define R_MIPS_PCHI16 64 +#define R_MIPS_PCLO16 65 +#define R_MIPS16_26 100 +#define R_MIPS16_GPREL 101 +#define R_MIPS16_GOT16 102 +#define R_MIPS16_CALL16 103 +#define R_MIPS16_HI16 104 +#define R_MIPS16_LO16 105 +#define R_MIPS16_TLS_GD 106 +#define R_MIPS16_TLS_LDM 107 +#define R_MIPS16_TLS_DTPREL_HI16 108 +#define R_MIPS16_TLS_DTPREL_LO16 109 +#define R_MIPS16_TLS_GOTTPREL 110 +#define R_MIPS16_TLS_TPREL_HI16 111 +#define R_MIPS16_TLS_TPREL_LO16 112 +#define R_MIPS16_PC16_S1 113 #define R_MIPS_COPY 126 #define R_MIPS_JUMP_SLOT 127 +#define R_MIPS_RELATIVE 128 +#define R_MICROMIPS_26_S1 133 +#define R_MICROMIPS_HI16 134 +#define R_MICROMIPS_LO16 135 +#define R_MICROMIPS_GPREL16 136 +#define R_MICROMIPS_LITERAL 137 +#define R_MICROMIPS_GOT16 138 +#define R_MICROMIPS_PC7_S1 139 +#define R_MICROMIPS_PC10_S1 140 +#define R_MICROMIPS_PC16_S1 141 +#define R_MICROMIPS_CALL16 142 +#define R_MICROMIPS_GOT_DISP 145 +#define R_MICROMIPS_GOT_PAGE 146 +#define R_MICROMIPS_GOT_OFST 147 +#define R_MICROMIPS_GOT_HI16 148 +#define R_MICROMIPS_GOT_LO16 149 +#define R_MICROMIPS_SUB 150 +#define R_MICROMIPS_HIGHER 151 +#define R_MICROMIPS_HIGHEST 152 +#define R_MICROMIPS_CALL_HI16 153 +#define R_MICROMIPS_CALL_LO16 154 +#define R_MICROMIPS_SCN_DISP 155 +#define R_MICROMIPS_JALR 156 +#define R_MICROMIPS_HI0_LO16 157 +#define R_MICROMIPS_TLS_GD 162 +#define R_MICROMIPS_TLS_LDM 163 +#define R_MICROMIPS_TLS_DTPREL_HI16 164 +#define R_MICROMIPS_TLS_DTPREL_LO16 165 +#define R_MICROMIPS_TLS_GOTTPREL 166 +#define R_MICROMIPS_TLS_TPREL_HI16 169 +#define R_MICROMIPS_TLS_TPREL_LO16 170 +#define R_MICROMIPS_GPREL7_S2 172 +#define R_MICROMIPS_PC23_S2 173 +#define R_MIPS_PC32 248 +#define R_MIPS_EH 249 +#define R_MIPS_GNU_REL16_S2 250 +#define R_MIPS_GNU_VTINHERIT 253 +#define R_MIPS_GNU_VTENTRY 254 /* Keep this the last entry. */ -#define R_MIPS_NUM 128 +#define R_MIPS_NUM 255 /* Legal values for p_type field of Elf32_Phdr. */ @@ -3998,8 +4107,11 @@ enum #define R_RISCV_SET32 56 #define R_RISCV_32_PCREL 57 #define R_RISCV_IRELATIVE 58 +#define R_RISCV_PLT32 59 +#define R_RISCV_SET_ULEB128 60 +#define R_RISCV_SUB_ULEB128 61 -#define R_RISCV_NUM 59 +#define R_RISCV_NUM 62 /* RISC-V specific values for the st_other field. */ #define STO_RISCV_VARIANT_CC 0x80 /* Function uses variant calling @@ -4093,8 +4205,11 @@ enum #define R_NDS32_TLS_DESC 119 /* LoongArch ELF Flags */ -#define EF_LARCH_ABI 0x07 -#define EF_LARCH_ABI_LP64D 0x03 +#define EF_LARCH_ABI_MODIFIER_MASK 0x07 +#define EF_LARCH_ABI_SOFT_FLOAT 0x01 +#define EF_LARCH_ABI_SINGLE_FLOAT 0x02 +#define EF_LARCH_ABI_DOUBLE_FLOAT 0x03 +#define EF_LARCH_OBJABI_V1 0x40 /* LoongArch specific dynamic relocations */ #define R_LARCH_NONE 0 @@ -4156,6 +4271,64 @@ enum #define R_LARCH_GNU_VTINHERIT 57 #define R_LARCH_GNU_VTENTRY 58 +/* reserved 59-63 */ + +#define R_LARCH_B16 64 +#define R_LARCH_B21 65 +#define R_LARCH_B26 66 +#define R_LARCH_ABS_HI20 67 +#define R_LARCH_ABS_LO12 68 +#define R_LARCH_ABS64_LO20 69 +#define R_LARCH_ABS64_HI12 70 +#define R_LARCH_PCALA_HI20 71 +#define R_LARCH_PCALA_LO12 72 +#define R_LARCH_PCALA64_LO20 73 +#define R_LARCH_PCALA64_HI12 74 +#define R_LARCH_GOT_PC_HI20 75 +#define R_LARCH_GOT_PC_LO12 76 +#define R_LARCH_GOT64_PC_LO20 77 +#define R_LARCH_GOT64_PC_HI12 78 +#define R_LARCH_GOT_HI20 79 +#define R_LARCH_GOT_LO12 80 +#define R_LARCH_GOT64_LO20 81 +#define R_LARCH_GOT64_HI12 82 +#define R_LARCH_TLS_LE_HI20 83 +#define R_LARCH_TLS_LE_LO12 84 +#define R_LARCH_TLS_LE64_LO20 85 +#define R_LARCH_TLS_LE64_HI12 86 +#define R_LARCH_TLS_IE_PC_HI20 87 +#define R_LARCH_TLS_IE_PC_LO12 88 +#define R_LARCH_TLS_IE64_PC_LO20 89 +#define R_LARCH_TLS_IE64_PC_HI12 90 +#define R_LARCH_TLS_IE_HI20 91 +#define R_LARCH_TLS_IE_LO12 92 +#define R_LARCH_TLS_IE64_LO20 93 +#define R_LARCH_TLS_IE64_HI12 94 +#define R_LARCH_TLS_LD_PC_HI20 95 +#define R_LARCH_TLS_LD_HI20 96 +#define R_LARCH_TLS_GD_PC_HI20 97 +#define R_LARCH_TLS_GD_HI20 98 +#define R_LARCH_32_PCREL 99 +#define R_LARCH_RELAX 100 +#define R_LARCH_DELETE 101 +#define R_LARCH_ALIGN 102 +#define R_LARCH_PCREL20_S2 103 +#define R_LARCH_CFA 104 +#define R_LARCH_ADD6 105 +#define R_LARCH_SUB6 106 +#define R_LARCH_ADD_ULEB128 107 +#define R_LARCH_SUB_ULEB128 108 +#define R_LARCH_64_PCREL 109 + +/* ARC specific declarations. */ + +/* Processor specific flags for the Ehdr e_flags field. */ +#define EF_ARC_MACH_MSK 0x000000ff +#define EF_ARC_OSABI_MSK 0x00000f00 +#define EF_ARC_ALL_MSK (EF_ARC_MACH_MSK | EF_ARC_OSABI_MSK) + +/* Processor specific values for the Shdr sh_type field. */ +#define SHT_ARC_ATTRIBUTES (SHT_LOPROC + 1) /* ARC attributes section. */ /* ARCompact/ARCv2 specific relocs. */ #define R_ARC_NONE 0x0 @@ -4163,7 +4336,7 @@ enum #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 @@ -4203,16 +4376,23 @@ enum #define R_ARC_SECTOFF_ME_2 0x2A #define R_ARC_SECTOFF_1 0x2B #define R_ARC_SECTOFF_2 0x2C +#define R_ARC_SDA_12 0x2D +#define R_ARC_SDA16_ST2 0x30 +#define R_ARC_32_PCREL 0x31 #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_JMP_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_S21W_PCREL_PLT 0x3C +#define R_ARC_S25H_PCREL_PLT 0x3D + +#define R_ARC_JLI_SECTOFF 0x3F #define R_ARC_TLS_DTPMOD 0x42 #define R_ARC_TLS_DTPOFF 0x43 @@ -4221,9 +4401,12 @@ enum #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 +#define R_ARC_TLS_DTPOFF_S9 0x49 +#define R_ARC_TLS_LE_S9 0x4A +#define R_ARC_TLS_LE_32 0x4B +#define R_ARC_S25W_PCREL_PLT 0x4C +#define R_ARC_S21H_PCREL_PLT 0x4D +#define R_ARC_NPS_CMEM16 0x4E /* OpenRISC 1000 specific relocs. */ #define R_OR1K_NONE 0 diff --git a/libelf/elf32_getchdr.c b/libelf/elf32_getchdr.c index 982a614c6c3a490cd9ef615f7e246e2189f65823..415913002a2de6b3e627a12a374ba5fa0ace551c 100644 --- a/libelf/elf32_getchdr.c +++ b/libelf/elf32_getchdr.c @@ -38,46 +38,8 @@ # define LIBELFBITS 32 #endif +#define ELF_WRLOCK_HELD 1 +#include "elf32_getchdr.h" -ElfW2(LIBELFBITS,Chdr) * -elfw2(LIBELFBITS,getchdr) (Elf_Scn *scn) -{ - ElfW2(LIBELFBITS,Shdr) *shdr = elfw2(LIBELFBITS,getshdr) (scn); - if (shdr == NULL) - return NULL; - - /* Must have SHF_COMPRESSED flag set. Allocated or no bits sections - can never be compressed. */ - if ((shdr->sh_flags & SHF_ALLOC) != 0) - { - __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS); - return NULL; - } - - if (shdr->sh_type == SHT_NULL - || shdr->sh_type == SHT_NOBITS) - { - __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE); - return NULL; - } - - if ((shdr->sh_flags & SHF_COMPRESSED) == 0) - { - __libelf_seterrno (ELF_E_NOT_COMPRESSED); - return NULL; - } - - /* This makes sure the data is in the correct format, so we don't - need to swap fields. */ - Elf_Data *d = elf_getdata (scn, NULL); - if (d == NULL) - return NULL; - - if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL) - { - __libelf_seterrno (ELF_E_INVALID_DATA); - return NULL; - } - - return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf; -} +#define ELF_WRLOCK_HELD 0 +#include "elf32_getchdr.h" \ No newline at end of file diff --git a/libelf/elf32_getchdr.h b/libelf/elf32_getchdr.h new file mode 100644 index 0000000000000000000000000000000000000000..04d47e7ac6668c3714de07ddd6df88544beed458 --- /dev/null +++ b/libelf/elf32_getchdr.h @@ -0,0 +1,61 @@ +#undef ADD_ROUTINE_PREFIX +#undef ADD_ROUTINE_SUFFIX + +#if ELF_WRLOCK_HELD +#define CONCAT(x,y) x##y +#define ADD_ROUTINE_PREFIX(y) CONCAT(__,y) +#define ADD_ROUTINE_SUFFIX(x) x ## _wrlock +#define INTERNAL internal_function +#else +#define ADD_ROUTINE_PREFIX(y) y +#define ADD_ROUTINE_SUFFIX(x) x +#define INTERNAL +#endif + +ElfW2(LIBELFBITS,Chdr) * +INTERNAL +ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getchdr))) (Elf_Scn *scn) +{ + + ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn); + + if (shdr == NULL) + return NULL; + + /* Must have SHF_COMPRESSED flag set. Allocated or no bits sections + can never be compressed. */ + if ((shdr->sh_flags & SHF_ALLOC) != 0) + { + __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS); + return NULL; + } + + if (shdr->sh_type == SHT_NULL + || shdr->sh_type == SHT_NOBITS) + { + __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE); + return NULL; + } + + if ((shdr->sh_flags & SHF_COMPRESSED) == 0) + { + __libelf_seterrno (ELF_E_NOT_COMPRESSED); + return NULL; + } + + /* This makes sure the data is in the correct format, so we don't + need to swap fields. */ + Elf_Data *d = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL); + if (d == NULL) + return NULL; + + if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL) + { + __libelf_seterrno (ELF_E_INVALID_DATA); + return NULL; + } + + return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf; +} +#undef INTERNAL +#undef ELF_WRLOCK_HELD \ No newline at end of file diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c index 6c06e5e4bc02fe5650f092b540090e79ad4aa910..3594e8bad6c0fc87dafba5302b00ab691910b515 100644 --- a/libelf/elf32_updatenull.c +++ b/libelf/elf32_updatenull.c @@ -256,6 +256,9 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) case SHT_SUNW_syminfo: sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYMINFO, 1); break; + case SHT_RELR: + sh_entsize = elf_typesize (LIBELFBITS, ELF_T_RELR, 1); + break; default: break; } @@ -404,7 +407,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) else { ElfW2(LIBELFBITS,Chdr) *chdr; - chdr = elfw2(LIBELFBITS,getchdr) (scn); + chdr = __elfw2(LIBELFBITS,getchdr_wrlock) (scn); if (unlikely (chdr == NULL)) return -1; sh_size = chdr->ch_size; diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c index d7f53af2a60401ab0f14707a3f37d0dfbe769859..c7283c6a606395cd880a9c140bd2daabfdcd417b 100644 --- a/libelf/elf_compress.c +++ b/libelf/elf_compress.c @@ -1,5 +1,6 @@ /* Compress or decompress a section. Copyright (C) 2015, 2016 Red Hat, Inc. + Copyright (C) 2023, Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -39,6 +40,10 @@ #include #include +#ifdef USE_ZSTD +#include +#endif + /* Cleanup and return result. Don't leak memory. */ static void * do_deflate_cleanup (void *result, z_stream *z, void *out_buf, @@ -54,53 +59,14 @@ do_deflate_cleanup (void *result, z_stream *z, void *out_buf, #define deflate_cleanup(result, cdata) \ do_deflate_cleanup(result, &z, out_buf, cdata) -/* Given a section, uses the (in-memory) Elf_Data to extract the - original data size (including the given header size) and data - alignment. Returns a buffer that has at least hsize bytes (for the - caller to fill in with a header) plus zlib compressed date. Also - returns the new buffer size in new_size (hsize + compressed data - size). Returns (void *) -1 when FORCE is false and the compressed - data would be bigger than the original data. */ +static void * -internal_function -__libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, - size_t *orig_size, size_t *orig_addralign, - size_t *new_size, bool force) +__libelf_compress_zlib (Elf_Scn *scn, size_t hsize, int ei_data, + size_t *orig_size, size_t *orig_addralign, + size_t *new_size, bool force, + Elf_Data *data, Elf_Data *next_data, + void *out_buf, size_t out_size, size_t block) { - /* The compressed data is the on-disk data. We simplify the - implementation a bit by asking for the (converted) in-memory - data (which might be all there is if the user created it with - elf_newdata) and then convert back to raw if needed before - compressing. Should be made a bit more clever to directly - use raw if that is directly available. */ - Elf_Data *data = elf_getdata (scn, NULL); - if (data == NULL) - return NULL; - - /* When not forced and we immediately know we would use more data by - compressing, because of the header plus zlib overhead (five bytes - per 16 KB block, plus a one-time overhead of six bytes for the - entire stream), don't do anything. */ - Elf_Data *next_data = elf_getdata (scn, data); - if (next_data == NULL && !force - && data->d_size <= hsize + 5 + 6) - return (void *) -1; - - *orig_addralign = data->d_align; - *orig_size = data->d_size; - - /* Guess an output block size. 1/8th of the original Elf_Data plus - hsize. Make the first chunk twice that size (25%), then increase - by a block (12.5%) when necessary. */ - size_t block = (data->d_size / 8) + hsize; - size_t out_size = 2 * block; - void *out_buf = malloc (out_size); - if (out_buf == NULL) - { - __libelf_seterrno (ELF_E_NOMEM); - return NULL; - } - /* Caller gets to fill in the header at the start. Just skip it here. */ size_t used = hsize; @@ -205,9 +171,189 @@ __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, return out_buf; } +#ifdef USE_ZSTD_COMPRESS +/* Cleanup and return result. Don't leak memory. */ +static void * +do_zstd_cleanup (void *result, ZSTD_CCtx * const cctx, void *out_buf, + Elf_Data *cdatap) +{ + ZSTD_freeCCtx (cctx); + free (out_buf); + if (cdatap != NULL) + free (cdatap->d_buf); + return result; +} + +#define zstd_cleanup(result, cdata) \ + do_zstd_cleanup(result, cctx, out_buf, cdata) + +static +void * +__libelf_compress_zstd (Elf_Scn *scn, size_t hsize, int ei_data, + size_t *orig_size, size_t *orig_addralign, + size_t *new_size, bool force, + Elf_Data *data, Elf_Data *next_data, + void *out_buf, size_t out_size, size_t block) +{ + /* Caller gets to fill in the header at the start. Just skip it here. */ + size_t used = hsize; + + ZSTD_CCtx* const cctx = ZSTD_createCCtx(); + Elf_Data cdata; + cdata.d_buf = NULL; + + /* Loop over data buffers. */ + ZSTD_EndDirective mode = ZSTD_e_continue; + + do + { + /* Convert to raw if different endianness. */ + cdata = *data; + bool convert = ei_data != MY_ELFDATA && data->d_size > 0; + if (convert) + { + /* Don't do this conversion in place, we might want to keep + the original data around, caller decides. */ + cdata.d_buf = malloc (data->d_size); + if (cdata.d_buf == NULL) + { + __libelf_seterrno (ELF_E_NOMEM); + return zstd_cleanup (NULL, NULL); + } + if (gelf_xlatetof (scn->elf, &cdata, data, ei_data) == NULL) + return zstd_cleanup (NULL, &cdata); + } + + ZSTD_inBuffer ib = { cdata.d_buf, cdata.d_size, 0 }; + + /* Get next buffer to see if this is the last one. */ + data = next_data; + if (data != NULL) + { + *orig_addralign = MAX (*orig_addralign, data->d_align); + *orig_size += data->d_size; + next_data = elf_getdata (scn, data); + } + else + mode = ZSTD_e_end; + + /* Flush one data buffer. */ + for (;;) + { + ZSTD_outBuffer ob = { out_buf + used, out_size - used, 0 }; + size_t ret = ZSTD_compressStream2 (cctx, &ob, &ib, mode); + if (ZSTD_isError (ret)) + { + __libelf_seterrno (ELF_E_COMPRESS_ERROR); + return zstd_cleanup (NULL, convert ? &cdata : NULL); + } + used += ob.pos; + + /* Bail out if we are sure the user doesn't want the + compression forced and we are using more compressed data + than original data. */ + if (!force && mode == ZSTD_e_end && used >= *orig_size) + return zstd_cleanup ((void *) -1, convert ? &cdata : NULL); + + if (ret > 0) + { + void *bigger = realloc (out_buf, out_size + block); + if (bigger == NULL) + { + __libelf_seterrno (ELF_E_NOMEM); + return zstd_cleanup (NULL, convert ? &cdata : NULL); + } + out_buf = bigger; + out_size += block; + } + else + break; + } + + if (convert) + { + free (cdata.d_buf); + cdata.d_buf = NULL; + } + } + while (mode != ZSTD_e_end); /* More data blocks. */ + + ZSTD_freeCCtx (cctx); + *new_size = used; + return out_buf; +} +#endif + +/* Given a section, uses the (in-memory) Elf_Data to extract the + original data size (including the given header size) and data + alignment. Returns a buffer that has at least hsize bytes (for the + caller to fill in with a header) plus zlib compressed date. Also + returns the new buffer size in new_size (hsize + compressed data + size). Returns (void *) -1 when FORCE is false and the compressed + data would be bigger than the original data. */ +void * +internal_function +__libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, + size_t *orig_size, size_t *orig_addralign, + size_t *new_size, bool force, bool use_zstd) +{ + /* The compressed data is the on-disk data. We simplify the + implementation a bit by asking for the (converted) in-memory + data (which might be all there is if the user created it with + elf_newdata) and then convert back to raw if needed before + compressing. Should be made a bit more clever to directly + use raw if that is directly available. */ + Elf_Data *data = elf_getdata (scn, NULL); + if (data == NULL) + return NULL; + + /* When not forced and we immediately know we would use more data by + compressing, because of the header plus zlib overhead (five bytes + per 16 KB block, plus a one-time overhead of six bytes for the + entire stream), don't do anything. + Size estimation for ZSTD compression would be similar. */ + Elf_Data *next_data = elf_getdata (scn, data); + if (next_data == NULL && !force + && data->d_size <= hsize + 5 + 6) + return (void *) -1; + + *orig_addralign = data->d_align; + *orig_size = data->d_size; + + /* Guess an output block size. 1/8th of the original Elf_Data plus + hsize. Make the first chunk twice that size (25%), then increase + by a block (12.5%) when necessary. */ + size_t block = (data->d_size / 8) + hsize; + size_t out_size = 2 * block; + void *out_buf = malloc (out_size); + if (out_buf == NULL) + { + __libelf_seterrno (ELF_E_NOMEM); + return NULL; + } + + if (use_zstd) + { +#ifdef USE_ZSTD_COMPRESS + return __libelf_compress_zstd (scn, hsize, ei_data, orig_size, + orig_addralign, new_size, force, + data, next_data, out_buf, out_size, + block); +#else + __libelf_seterrno (ELF_E_UNKNOWN_COMPRESSION_TYPE); + return NULL; +#endif + } + else + return __libelf_compress_zlib (scn, hsize, ei_data, orig_size, + orig_addralign, new_size, force, + data, next_data, out_buf, out_size, + block); +} + void * internal_function -__libelf_decompress (void *buf_in, size_t size_in, size_t size_out) +__libelf_decompress_zlib (void *buf_in, size_t size_in, size_t size_out) { /* Catch highly unlikely compression ratios so we don't allocate some giant amount of memory for nothing. The max compression @@ -218,7 +364,7 @@ __libelf_decompress (void *buf_in, size_t size_in, size_t size_out) return NULL; } - /* Malloc might return NULL when requestion zero size. This is highly + /* Malloc might return NULL when requesting zero size. This is highly unlikely, it would only happen when the compression was forced. But we do need a non-NULL buffer to return and set as result. Just make sure to always allocate at least 1 byte. */ @@ -260,6 +406,50 @@ __libelf_decompress (void *buf_in, size_t size_in, size_t size_out) return buf_out; } +#ifdef USE_ZSTD +static void * +__libelf_decompress_zstd (void *buf_in, size_t size_in, size_t size_out) +{ + /* Malloc might return NULL when requesting zero size. This is highly + unlikely, it would only happen when the compression was forced. + But we do need a non-NULL buffer to return and set as result. + Just make sure to always allocate at least 1 byte. */ + void *buf_out = malloc (size_out ?: 1); + if (unlikely (buf_out == NULL)) + { + __libelf_seterrno (ELF_E_NOMEM); + return NULL; + } + + size_t ret = ZSTD_decompress (buf_out, size_out, buf_in, size_in); + if (ZSTD_isError (ret)) + { + free (buf_out); + __libelf_seterrno (ELF_E_DECOMPRESS_ERROR); + return NULL; + } + else + return buf_out; +} +#endif + +void * +internal_function +__libelf_decompress (int chtype, void *buf_in, size_t size_in, size_t size_out) +{ + if (chtype == ELFCOMPRESS_ZLIB) + return __libelf_decompress_zlib (buf_in, size_in, size_out); + else + { +#ifdef USE_ZSTD + return __libelf_decompress_zstd (buf_in, size_in, size_out); +#else + __libelf_seterrno (ELF_E_UNKNOWN_COMPRESSION_TYPE); + return NULL; +#endif + } +} + void * internal_function __libelf_decompress_elf (Elf_Scn *scn, size_t *size_out, size_t *addralign) @@ -268,7 +458,19 @@ __libelf_decompress_elf (Elf_Scn *scn, size_t *size_out, size_t *addralign) if (gelf_getchdr (scn, &chdr) == NULL) return NULL; + bool unknown_compression = false; if (chdr.ch_type != ELFCOMPRESS_ZLIB) + { + if (chdr.ch_type != ELFCOMPRESS_ZSTD) + unknown_compression = true; + +#ifndef USE_ZSTD + if (chdr.ch_type == ELFCOMPRESS_ZSTD) + unknown_compression = true; +#endif + } + + if (unknown_compression) { __libelf_seterrno (ELF_E_UNKNOWN_COMPRESSION_TYPE); return NULL; @@ -295,7 +497,9 @@ __libelf_decompress_elf (Elf_Scn *scn, size_t *size_out, size_t *addralign) ? sizeof (Elf32_Chdr) : sizeof (Elf64_Chdr)); size_t size_in = data->d_size - hsize; void *buf_in = data->d_buf + hsize; - void *buf_out = __libelf_decompress (buf_in, size_in, chdr.ch_size); + void *buf_out + = __libelf_decompress (chdr.ch_type, buf_in, size_in, chdr.ch_size); + *size_out = chdr.ch_size; *addralign = chdr.ch_addralign; return buf_out; @@ -320,10 +524,20 @@ __libelf_reset_rawdata (Elf_Scn *scn, void *buf, size_t size, size_t align, if (scn->data_base != scn->rawdata_base) free (scn->data_base); scn->data_base = NULL; + if (scn->zdata_base != buf + && scn->zdata_base != scn->rawdata_base) + { + free (scn->zdata_base); + scn->zdata_base = NULL; + } if (scn->elf->map_address == NULL || scn->rawdata_base == scn->zdata_base || (scn->flags & ELF_F_MALLOCED) != 0) - free (scn->rawdata_base); + { + free (scn->rawdata_base); + scn->rawdata_base = NULL; + scn->zdata_base = NULL; + } scn->rawdata_base = buf; scn->flags |= ELF_F_MALLOCED; @@ -394,7 +608,7 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) } int compressed = (sh_flags & SHF_COMPRESSED); - if (type == ELFCOMPRESS_ZLIB) + if (type == ELFCOMPRESS_ZLIB || type == ELFCOMPRESS_ZSTD) { /* Compress/Deflate. */ if (compressed == 1) @@ -408,7 +622,8 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) size_t orig_size, orig_addralign, new_size; void *out_buf = __libelf_compress (scn, hsize, elfdata, &orig_size, &orig_addralign, - &new_size, force); + &new_size, force, + type == ELFCOMPRESS_ZSTD); /* Compression would make section larger, don't change anything. */ if (out_buf == (void *) -1) @@ -422,7 +637,7 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) if (elfclass == ELFCLASS32) { Elf32_Chdr chdr; - chdr.ch_type = ELFCOMPRESS_ZLIB; + chdr.ch_type = type; chdr.ch_size = orig_size; chdr.ch_addralign = orig_addralign; if (elfdata != MY_ELFDATA) @@ -436,7 +651,7 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) else { Elf64_Chdr chdr; - chdr.ch_type = ELFCOMPRESS_ZLIB; + chdr.ch_type = type; chdr.ch_reserved = 0; chdr.ch_size = orig_size; chdr.ch_addralign = sh_addralign; @@ -473,6 +688,7 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags) data around, but since that might have been multiple Elf_Data buffers let the user uncompress it explicitly again if they want it to simplify bookkeeping. */ + free (scn->zdata_base); scn->zdata_base = NULL; return 1; diff --git a/libelf/elf_compress_gnu.c b/libelf/elf_compress_gnu.c index 3d2977e7d3b01ff6355844c3136c0c9b1c7473ab..8e20b30e9800d586320737e0fd1e07b9e82db68d 100644 --- a/libelf/elf_compress_gnu.c +++ b/libelf/elf_compress_gnu.c @@ -103,7 +103,8 @@ elf_compress_gnu (Elf_Scn *scn, int inflate, unsigned int flags) size_t orig_size, new_size, orig_addralign; void *out_buf = __libelf_compress (scn, hsize, elfdata, &orig_size, &orig_addralign, - &new_size, force); + &new_size, force, + /* use_zstd */ false); /* Compression would make section larger, don't change anything. */ if (out_buf == (void *) -1) @@ -178,7 +179,7 @@ elf_compress_gnu (Elf_Scn *scn, int inflate, unsigned int flags) size_t size = gsize; size_t size_in = data->d_size - hsize; void *buf_in = data->d_buf + hsize; - void *buf_out = __libelf_decompress (buf_in, size_in, size); + void *buf_out = __libelf_decompress (ELFCOMPRESS_ZLIB, buf_in, size_in, size); if (buf_out == NULL) return -1; diff --git a/libelf/elf_end.c b/libelf/elf_end.c index 5c451f36daddd6ac33a43fd69911e1af6a6b4e92..80f4d13fae8c180ea88f4eb2aae2a9398c258701 100644 --- a/libelf/elf_end.c +++ b/libelf/elf_end.c @@ -1,5 +1,6 @@ /* Free resources associated with Elf descriptor. Copyright (C) 1998,1999,2000,2001,2002,2004,2005,2007,2015,2016 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. Written by Ulrich Drepper , 1998. @@ -32,12 +33,22 @@ #endif #include +#include #include #include #include "libelfP.h" +static void +free_chunk (void *n) +{ + Elf_Data_Chunk *rawchunk = (Elf_Data_Chunk *)n; + if (rawchunk->dummy_scn.flags & ELF_F_MALLOCED) + free (rawchunk->data.d.d_buf); + free (rawchunk); +} + int elf_end (Elf *elf) { @@ -71,7 +82,10 @@ elf_end (Elf *elf) elf->state.ar.ar_sym = NULL; if (elf->state.ar.children != NULL) - return 0; + { + rwlock_unlock(elf->lock); + return 0; + } } /* Remove this structure from the children list. */ @@ -112,20 +126,13 @@ elf_end (Elf *elf) case ELF_K_ELF: { - Elf_Data_Chunk *rawchunks + void *rawchunks = (elf->class == ELFCLASS32 || (offsetof (struct Elf, state.elf32.rawchunks) == offsetof (struct Elf, state.elf64.rawchunks)) ? elf->state.elf32.rawchunks : elf->state.elf64.rawchunks); - while (rawchunks != NULL) - { - Elf_Data_Chunk *next = rawchunks->next; - if (rawchunks->dummy_scn.flags & ELF_F_MALLOCED) - free (rawchunks->data.d.d_buf); - free (rawchunks); - rawchunks = next; - } + tdestroy (rawchunks, free_chunk); Elf_ScnList *list = (elf->class == ELFCLASS32 || (offsetof (struct Elf, state.elf32.scns) @@ -153,7 +160,10 @@ elf_end (Elf *elf) rawdata_base. If it is already used it will be freed below. */ if (scn->zdata_base != scn->rawdata_base) - free (scn->zdata_base); + { + free (scn->zdata_base); + scn->zdata_base = NULL; + } /* If the file has the same byte order and the architecture doesn't require overly stringent diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c index 5ebd270f80820b2350140f10d804970938e498c2..7c3ac0432f995a8915d8753272e617ed3f907865 100644 --- a/libelf/elf_getdata.c +++ b/libelf/elf_getdata.c @@ -582,4 +582,18 @@ elf_getdata (Elf_Scn *scn, Elf_Data *data) return result; } + +Elf_Data * +internal_function +__elf_getdata_wrlock (Elf_Scn *scn, Elf_Data *data) +{ + Elf_Data *result; + + if (scn == NULL) + return NULL; + + result = __elf_getdata_rdlock (scn, data); + + return result; +} INTDEF(elf_getdata) diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c index 5a35ccdc6b2bf8cc80075448ad8b515be97ddb67..05ff329c75c909b7190a4de176a0651ae046eb7b 100644 --- a/libelf/elf_getdata_rawchunk.c +++ b/libelf/elf_getdata_rawchunk.c @@ -1,6 +1,6 @@ /* Return converted data from raw chunk of ELF file. Copyright (C) 2007, 2014, 2015 Red Hat, Inc. - Copyright (C) 2022 Mark J. Wielaard + Copyright (C) 2022, 2023 Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -33,12 +33,28 @@ #include #include +#include #include #include #include "libelfP.h" #include "common.h" +static int +chunk_compare (const void *a, const void *b) +{ + Elf_Data_Chunk *da = (Elf_Data_Chunk *)a; + Elf_Data_Chunk *db = (Elf_Data_Chunk *)b; + + if (da->offset != db->offset) + return da->offset - db->offset; + + if (da->data.d.d_size != db->data.d.d_size) + return da->data.d.d_size - db->data.d.d_size; + + return da->data.d.d_type - db->data.d.d_type; +} + Elf_Data * elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) { @@ -75,19 +91,27 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) rwlock_rdlock (elf->lock); /* Maybe we already got this chunk? */ - Elf_Data_Chunk *rawchunks = elf->state.elf.rawchunks; - while (rawchunks != NULL) + Elf_Data_Chunk key; + key.offset = offset; + key.data.d.d_size = size; + key.data.d.d_type = type; + Elf_Data_Chunk **found = tsearch (&key, &elf->state.elf.rawchunks, + &chunk_compare); + if (found == NULL) + goto nomem; + + /* Existing entry. */ + if (*found != &key && *found != NULL) { - if ((rawchunks->offset == offset || size == 0) - && rawchunks->data.d.d_size == size - && rawchunks->data.d.d_type == type) - { - result = &rawchunks->data.d; - goto out; - } - rawchunks = rawchunks->next; + result = &(*found)->data.d; + goto out; } + /* New entry. Note that *found will point to the newly inserted + (dummy) key. We'll replace it with a real rawchunk when that is + setup. Make sure to tdelete the dummy key if anything goes + wrong. */ + size_t align = __libelf_type_align (elf->class, type); if (elf->map_address != NULL) { @@ -112,6 +136,7 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) if (rawchunk == NULL) { nomem: + tdelete (&key, &elf->state.elf.rawchunks, &chunk_compare); __libelf_seterrno (ELF_E_NOMEM); goto out; } @@ -122,6 +147,7 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) != size)) { /* Something went wrong. */ + tdelete (&key, &elf->state.elf.rawchunks, &chunk_compare); free (rawchunk); __libelf_seterrno (ELF_E_READ_ERROR); goto out; @@ -189,8 +215,7 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) rwlock_unlock (elf->lock); rwlock_wrlock (elf->lock); - chunk->next = elf->state.elf.rawchunks; - elf->state.elf.rawchunks = chunk; + *found = chunk; result = &chunk->data.d; out: diff --git a/libelf/elf_newscn.c b/libelf/elf_newscn.c index d6bdf1536aeba629976f3c5220742121eb7b55c7..ec731f759de4772071f921eeff0270671dbc3862 100644 --- a/libelf/elf_newscn.c +++ b/libelf/elf_newscn.c @@ -94,9 +94,9 @@ elf_newscn (Elf *elf) 1 #endif ) - newp = calloc (sizeof (Elf_ScnList) - + ((elf->state.elf.scnincr *= 2) - * sizeof (Elf_Scn)), 1); + newp = calloc (1, sizeof (Elf_ScnList) + + ((elf->state.elf.scnincr *= 2) + * sizeof (Elf_Scn))); if (newp == NULL) { __libelf_seterrno (ELF_E_NOMEM); diff --git a/libelf/elf_version.c b/libelf/elf_version.c index 6ec534ab105b120ff941818c1ed78d460f30cf7a..8296bb657af580fa608aae29972e9a01c3cacc73 100644 --- a/libelf/elf_version.c +++ b/libelf/elf_version.c @@ -32,12 +32,21 @@ #endif #include +#include +/* Multiple threads may initialize __libelf_version. + pthread_once() ensures that __libelf_version is initialized only once. */ +once_define(static, version_once); /* Currently selected version. Should be EV_CURRENT. Will be EV_NONE if elf_version () has not been called yet. */ unsigned int __libelf_version = EV_NONE; +static void initialize_version(void) +{ + __libelf_version = EV_CURRENT; +} + unsigned int elf_version (unsigned int version) { @@ -49,7 +58,7 @@ elf_version (unsigned int version) /* Phew, we know this version. */ /* Signal that the version is now initialized. */ - __libelf_version = EV_CURRENT; + once(version_once, initialize_version); /* And return the last (or initial) version. */ return EV_CURRENT; diff --git a/libelf/gelf.h b/libelf/gelf.h index 7a3c87aaed4e6a44f53f1aef66672e36ccad2761..1847021ea5a09c16671c803633cbc996cb9202eb 100644 --- a/libelf/gelf.h +++ b/libelf/gelf.h @@ -82,6 +82,9 @@ typedef Elf64_Rel GElf_Rel; /* Relocation table entry with addend (in section of type SHT_RELA). */ typedef Elf64_Rela GElf_Rela; +/* Relative relocation entry (in section of type SHT_RELR). */ +typedef Elf64_Relr GElf_Relr; + /* Program segment header. */ typedef Elf64_Phdr GElf_Phdr; diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c index 493d79161e64e9b039dd1500832b1878d4bf04c3..63bcbae51a1dd84e51d4bc9f2f91ccec45ed39c5 100644 --- a/libelf/gelf_fsize.c +++ b/libelf/gelf_fsize.c @@ -69,7 +69,8 @@ const size_t __libelf_type_sizes[ELFCLASSNUM - 1][ELF_T_NUM] = [ELF_T_LIB] = sizeof (ElfW2(LIBELFBITS, Ext_Lib)), \ [ELF_T_AUXV] = sizeof (ElfW2(LIBELFBITS, Ext_auxv_t)), \ [ELF_T_CHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Chdr)), \ - [ELF_T_GNUHASH] = ELFW2(LIBELFBITS, FSZ_WORD) + [ELF_T_GNUHASH] = ELFW2(LIBELFBITS, FSZ_WORD), \ + [ELF_T_RELR] = ELFW2(LIBELFBITS, FSZ_RELR) TYPE_SIZES (32) }, [ELFCLASS64 - 1] = { diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c index d8ad0634433043ee9d69e4ff3912feaea15f5a47..749da1a17acfed678db09e363c7a7a57786862c1 100644 --- a/libelf/gelf_xlate.c +++ b/libelf/gelf_xlate.c @@ -204,7 +204,8 @@ const xfct_t __elf_xfctstom[ELFCLASSNUM - 1][ELF_T_NUM] = [ELF_T_MOVE] = ElfW2(Bits, cvt_Move), \ [ELF_T_LIB] = ElfW2(Bits, cvt_Lib), \ [ELF_T_AUXV] = ElfW2(Bits, cvt_auxv_t), \ - [ELF_T_CHDR] = ElfW2(Bits, cvt_chdr) + [ELF_T_CHDR] = ElfW2(Bits, cvt_chdr), \ + [ELF_T_RELR] = ElfW2(Bits, cvt_Relr) define_xfcts (32), [ELF_T_GNUHASH] = Elf32_cvt_Word }, diff --git a/libelf/gelf_xlate.h b/libelf/gelf_xlate.h index 3c0e4bf642add355fb8a80f7114722e672b03fc9..d5511c34ebc2a7d56eaeb3b3ac0da772e2e71d03 100644 --- a/libelf/gelf_xlate.h +++ b/libelf/gelf_xlate.h @@ -36,6 +36,7 @@ FUNDAMENTAL (WORD, Word, LIBELFBITS); FUNDAMENTAL (SWORD, Sword, LIBELFBITS); FUNDAMENTAL (XWORD, Xword, LIBELFBITS); FUNDAMENTAL (SXWORD, Sxword, LIBELFBITS); +FUNDAMENTAL (RELR, Relr, LIBELFBITS); /* The structured types. */ TYPE (Ehdr, LIBELFBITS) diff --git a/libelf/gnuhash_xlate.h b/libelf/gnuhash_xlate.h index 6faf113672521d9fd926cda42ce41889efe1bcc5..3a00ae0ae18b40bf155bb3733470d45d6bc3d32b 100644 --- a/libelf/gnuhash_xlate.h +++ b/libelf/gnuhash_xlate.h @@ -1,5 +1,6 @@ /* Conversion functions for versioning information. Copyright (C) 2006, 2007 Red Hat, Inc. + Copyright (C) 2023, Mark J. Wielaard This file is part of elfutils. Written by Ulrich Drepper , 2006. @@ -36,6 +37,7 @@ static void elf_cvt_gnuhash (void *dest, const void *src, size_t len, int encode) { + size_t size = len; /* The GNU hash table format on 64 bit machines mixes 32 bit and 64 bit words. We must detangle them here. */ Elf32_Word *dest32 = dest; @@ -45,7 +47,7 @@ elf_cvt_gnuhash (void *dest, const void *src, size_t len, int encode) for (unsigned int cnt = 0; cnt < 4; ++cnt) { if (len < 4) - return; + goto done; dest32[cnt] = bswap_32 (src32[cnt]); len -= 4; } @@ -58,7 +60,7 @@ elf_cvt_gnuhash (void *dest, const void *src, size_t len, int encode) for (unsigned int cnt = 0; cnt < bitmask_words; ++cnt) { if (len < 8) - return; + goto done; dest64[cnt] = bswap_64 (src64[cnt]); len -= 8; } @@ -71,4 +73,10 @@ elf_cvt_gnuhash (void *dest, const void *src, size_t len, int encode) *dest32++ = bswap_32 (*src32++); len -= 4; } + + done: + /* If there are any bytes left, we weren't able to convert the + partial structures, just copy them over. */ + if (len > 0) + memmove (dest + size - len, src + size - len, len); } diff --git a/libelf/libelf.h b/libelf/libelf.h index a139e733ae7e97d158433b8d81f32901663772d5..d3f057b49b89f0e987e01cad78030cda35833d05 100644 --- a/libelf/libelf.h +++ b/libelf/libelf.h @@ -64,6 +64,24 @@ #define ELFCOMPRESS_HIPROC 0x7fffffff /* End of processor-specific. */ #endif +#ifndef ELFCOMPRESS_ZSTD + /* So ZSTD compression can be used even with an old system elf.h. */ + #define ELFCOMPRESS_ZSTD 2 /* Zstandard algorithm. */ +#endif + +#ifndef SHT_RELR + /* So RELR defines/typedefs can be used even with an old system elf.h. */ + #define SHT_RELR 19 /* RELR relative relocations */ + + /* RELR relocation table entry */ + typedef Elf32_Word Elf32_Relr; + typedef Elf64_Xword Elf64_Relr; + + #define DT_RELRSZ 35 /* Total size of RELR relative relocations */ + #define DT_RELR 36 /* Address of RELR relative relocations */ + #define DT_RELRENT 37 /* Size of one RELR relative relocaction */ +#endif + #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) # define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__))) # define __deprecated_attribute__ __attribute__ ((__deprecated__)) @@ -119,6 +137,7 @@ typedef enum ELF_T_CHDR, /* Compressed, Elf32_Chdr, Elf64_Chdr, ... */ ELF_T_NHDR8, /* Special GNU Properties note. Same as Nhdr, except padding. */ + ELF_T_RELR, /* Relative relocation entry. */ /* Keep this the last entry. */ ELF_T_NUM } Elf_Type; @@ -283,7 +302,7 @@ extern Elf_Scn *elf_getscn (Elf *__elf, size_t __index); /* Get section at OFFSET. */ extern Elf_Scn *elf32_offscn (Elf *__elf, Elf32_Off __offset); -/* Similar bug this time the binary calls is ELFCLASS64. */ +/* Similar but this time the binary calls is ELFCLASS64. */ extern Elf_Scn *elf64_offscn (Elf *__elf, Elf64_Off __offset); /* Get index of section. */ @@ -348,10 +367,10 @@ extern Elf64_Chdr *elf64_getchdr (Elf_Scn *__scn); elf_compress takes a compression type that should be either zero to decompress or an ELFCOMPRESS algorithm to use for compression. - Currently only ELFCOMPRESS_ZLIB is supported. elf_compress_gnu - will compress in the traditional GNU compression format when - compress is one and decompress the section data when compress is - zero. + Currently ELFCOMPRESS_ZLIB and ELFCOMPRESS_ZSTD are supported. + elf_compress_gnu will compress in the traditional GNU compression + format when compress is one and decompress the section data when + compress is zero. The FLAGS argument can be zero or ELF_CHF_FORCE. If FLAGS contains ELF_CHF_FORCE then it will always compress the section, even if diff --git a/libelf/libelf.map b/libelf/libelf.map index 10dc5059e4d430f876b38e53cc25b454d598f9ad..25760bc4323884f3648125a98614c3c81afeac43 100644 --- a/libelf/libelf.map +++ b/libelf/libelf.map @@ -50,7 +50,6 @@ ELFUTILS_1.0 { elf_rand; elf_rawdata; elf_rawfile; - elf_scncnt; elf_strptr; elf_update; elf_version; diff --git a/libelf/libelfP.h b/libelf/libelfP.h index d88a613cc9d530b3c7e4801e8cead1f4e764d86b..ed061abb0066e2351eacf270c3bb2eae406dc450 100644 --- a/libelf/libelfP.h +++ b/libelf/libelfP.h @@ -1,5 +1,6 @@ /* Internal interfaces for libelf. Copyright (C) 1998-2010, 2015, 2016 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. Contributed by Ulrich Drepper , 1998. @@ -62,6 +63,7 @@ #define ELF32_FSZ_SWORD 4 #define ELF32_FSZ_XWORD 8 #define ELF32_FSZ_SXWORD 8 +#define ELF32_FSZ_RELR 4 /* Same for 64 bits objects. */ #define ELF64_FSZ_ADDR 8 @@ -71,6 +73,7 @@ #define ELF64_FSZ_SWORD 4 #define ELF64_FSZ_XWORD 8 #define ELF64_FSZ_SXWORD 8 +#define ELF64_FSZ_RELR 8 /* This is an extension of the ELF_F_* enumeration. The values here are @@ -262,11 +265,7 @@ typedef struct Elf_ScnList typedef struct Elf_Data_Chunk { Elf_Data_Scn data; - union - { - Elf_Scn dummy_scn; - struct Elf_Data_Chunk *next; - }; + Elf_Scn dummy_scn; int64_t offset; /* The original raw offset in the Elf image. */ } Elf_Data_Chunk; @@ -324,7 +323,7 @@ struct Elf Elf_ScnList *scns_last; /* Last element in the section list. If NULL the data has not yet been read from the file. */ - Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ + void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ unsigned int scnincr; /* Number of sections allocate the last time. */ int ehdr_flags; /* Flags (dirty) for ELF header. */ @@ -343,7 +342,7 @@ struct Elf Elf_ScnList *scns_last; /* Last element in the section list. If NULL the data has not yet been read from the file. */ - Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ + void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ unsigned int scnincr; /* Number of sections allocate the last time. */ int ehdr_flags; /* Flags (dirty) for ELF header. */ @@ -368,7 +367,7 @@ struct Elf Elf_ScnList *scns_last; /* Last element in the section list. If NULL the data has not yet been read from the file. */ - Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ + void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ unsigned int scnincr; /* Number of sections allocate the last time. */ int ehdr_flags; /* Flags (dirty) for ELF header. */ @@ -515,6 +514,8 @@ extern Elf32_Shdr *__elf32_getshdr_rdlock (Elf_Scn *__scn) internal_function; extern Elf64_Shdr *__elf64_getshdr_rdlock (Elf_Scn *__scn) internal_function; extern Elf32_Shdr *__elf32_getshdr_wrlock (Elf_Scn *__scn) internal_function; extern Elf64_Shdr *__elf64_getshdr_wrlock (Elf_Scn *__scn) internal_function; +extern Elf32_Chdr *__elf32_getchdr_wrlock (Elf_Scn *__scn) internal_function; +extern Elf64_Chdr *__elf64_getchdr_wrlock (Elf_Scn *__scn) internal_function; extern Elf_Scn *__elf_getscn_internal (Elf *__elf, size_t __index) attribute_hidden; extern Elf_Scn *__elf_nextscn_internal (Elf *__elf, Elf_Scn *__scn) @@ -524,6 +525,8 @@ extern Elf_Data *__elf_getdata_internal (Elf_Scn *__scn, Elf_Data *__data) attribute_hidden; extern Elf_Data *__elf_getdata_rdlock (Elf_Scn *__scn, Elf_Data *__data) internal_function; +extern Elf_Data *__elf_getdata_wrlock (Elf_Scn *__scn, Elf_Data *__data) + internal_function; extern Elf_Data *__elf_rawdata_internal (Elf_Scn *__scn, Elf_Data *__data) attribute_hidden; /* Should be called to setup first section data element if @@ -574,10 +577,10 @@ extern uint32_t __libelf_crc32 (uint32_t crc, unsigned char *buf, size_t len) extern void * __libelf_compress (Elf_Scn *scn, size_t hsize, int ei_data, size_t *orig_size, size_t *orig_addralign, - size_t *size, bool force) + size_t *size, bool force, bool use_zstd) internal_function; -extern void * __libelf_decompress (void *buf_in, size_t size_in, +extern void * __libelf_decompress (int chtype, void *buf_in, size_t size_in, size_t size_out) internal_function; extern void * __libelf_decompress_elf (Elf_Scn *scn, size_t *size_out, size_t *addralign) diff --git a/m4/ChangeLog b/m4/ChangeLog deleted file mode 100644 index 8729f58c77a42221c61edbda7ae9f6bc1dc12330..0000000000000000000000000000000000000000 --- a/m4/ChangeLog +++ /dev/null @@ -1,101 +0,0 @@ -2022-03-20 Mark Wielaard - - * biarch.m4: Don't check whether -m64 works for 32bit host. - -2022-03-14 Mark Wielaard - - * biarch.m4: Use AS_HELP_STRING instead of AC_HELP_STRING. - * zip.m4: Likewise. - -2020-12-15 Dmitry V. Levin - - * .gitignore: New file. - - * Makefile.am: Remove. - -2019-10-28 Aaron Merey - - * ax_check_compile_flag.m4, ax_cxx_compile_stdcxx.m4: New files. - -2015-05-01 Mark Wielaard - - * zip.m4: Explicitly set with_ to no, if not yes. - -2014-07-14 Mark Wielaard - - * biarch.m4 (utrace_BIARCH): Set biarch-no for cross-compile using - AC_RUN_IFELSE extra argument. - -2013-12-02 Jan Kratochvil - - * biarch.m4 (utrace_BIARCH): Call AC_MSG_WARN if !BIARCH. - -2013-11-07 Roland McGrath - Jan Kratochvil - - * biarch.m4: New file. - -2013-04-24 Mark Wielaard - - * gettext.m4: Upgrade to gettext-0.18.2. - * iconv.m4: Upgrade to gettext-0.18.2. - * po.m4: Upgrade to gettext-0.18.2. - -2010-04-14 Roland McGrath - - * gettext.m4: Upgrade to gettext-0.17. - * iconv.m4: Upgrade to gettext-0.17. - * po.m4: Upgrade to gettext-0.17. - -2009-08-26 Roland McGrath - - * zip.m4 (eu_ZIPLIB): Don't apply lib/LIB suffix to args. - -2009-02-01 Roland McGrath - - * zip.m4: Fix --with/--without argument handling. - -2009-01-08 Roland McGrath - - * zip.am: New file. - * Makefile.am (EXTRA_DIST): Add it. - -2007-06-05 Ulrich Drepper - - * gettext.m4: Update from gettext 0.16.1. - * iconv.m4: Likewise. - * progtest.m4: Likewise. - * nls.m4: New file. - * po.m4: New file. - -2005-02-15 Ulrich Drepper - - * Makefile.am (EXTRA_DIST): Remove glibc21.m4, intdiv0.m4, - inttypes.m4, inttypes_h.m4, inttypes-pri.m4, isc-posix.m4, - lib-ld.m4, lib-link.m4, lib-prefix.m4, stdint_h.m4, uintmax_t.m4, - and ulonglong.m4. - * glibc21.m4: Removed. - * inttypes_h.m4: Removed. - * inttypes.m4: Removed. - * inttypes-pri.m4: Removed. - * isc-posix.m4: Removed. - * lib-ld.m4: Removed. - * lib-link.m4: Removed. - * lib-prefix.m4: Removed. - * stdint_h.m4: Removed. - * uintmax_t.m4: Removed. - * ulonglong.m4: Removed. - -2002-03-22 gettextize - - * codeset.m4: Upgrade to gettext-0.11. - * gettext.m4: Upgrade to gettext-0.11. - * glibc21.m4: Upgrade to gettext-0.11. - * iconv.m4: Upgrade to gettext-0.11. - * isc-posix.m4: New file, from gettext-0.11. - * lcmessage.m4: Upgrade to gettext-0.11. - * lib-ld.m4: Upgrade to gettext-0.11. - * lib-link.m4: Upgrade to gettext-0.11. - * lib-prefix.m4: Upgrade to gettext-0.11. - * progtest.m4: Upgrade to gettext-0.11. - * Makefile.am (EXTRA_DIST): Add the new files. diff --git a/m4/ax_check_compile_flag.m4 b/m4/ax_check_compile_flag.m4 deleted file mode 100644 index ca3639715e7243fa4343eb2e7f3de53927cc9d4a..0000000000000000000000000000000000000000 --- a/m4/ax_check_compile_flag.m4 +++ /dev/null @@ -1,74 +0,0 @@ -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT]) -# -# DESCRIPTION -# -# Check whether the given FLAG works with the current language's compiler -# or gives an error. (Warnings, however, are ignored) -# -# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on -# success/failure. -# -# If EXTRA-FLAGS is defined, it is added to the current language's default -# flags (e.g. CFLAGS) when the check is done. The check is thus made with -# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to -# force the compiler to issue an error when a bad flag is given. -# -# INPUT gives an alternative input source to AC_COMPILE_IFELSE. -# -# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this -# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG. -# -# LICENSE -# -# Copyright (c) 2008 Guido U. Draheim -# Copyright (c) 2011 Maarten Bosmans -# -# This program 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. -# -# This program 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 . -# -# As a special exception, the respective Autoconf Macro's copyright owner -# gives unlimited permission to copy, distribute and modify the configure -# scripts that are the output of Autoconf when processing the Macro. You -# need not follow the terms of the GNU General Public License when using -# or distributing such scripts, even though portions of the text of the -# Macro appear in them. The GNU General Public License (GPL) does govern -# all other use of the material that constitutes the Autoconf Macro. -# -# This special exception to the GPL applies to versions of the Autoconf -# Macro released by the Autoconf Archive. When you make and distribute a -# modified version of the Autoconf Macro, you may extend this special -# exception to the GPL to apply to your modified version as well. - -#serial 4 - -AC_DEFUN([AX_CHECK_COMPILE_FLAG], -[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF -AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl -AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [ - ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS - _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1" - AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])], - [AS_VAR_SET(CACHEVAR,[yes])], - [AS_VAR_SET(CACHEVAR,[no])]) - _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags]) -AS_VAR_IF(CACHEVAR,yes, - [m4_default([$2], :)], - [m4_default([$3], :)]) -AS_VAR_POPDEF([CACHEVAR])dnl -])dnl AX_CHECK_COMPILE_FLAGS diff --git a/m4/ax_cxx_compile_stdcxx.m4 b/m4/ax_cxx_compile_stdcxx.m4 index 8adc76569aa7726461307c65b087646e70a935fa..8edf5152ec7a91bea5858436ae70bb6e877689a4 100644 --- a/m4/ax_cxx_compile_stdcxx.m4 +++ b/m4/ax_cxx_compile_stdcxx.m4 @@ -1,5 +1,5 @@ # =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html +# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html # =========================================================================== # # SYNOPSIS @@ -9,14 +9,14 @@ # DESCRIPTION # # Check for baseline language coverage in the compiler for the specified -# version of the C++ standard. If necessary, add switches to CXX to -# enable support. VERSION may be '11' (for the C++11 standard) or '14' -# (for the C++14 standard). +# version of the C++ standard. If necessary, add switches to CXX and +# CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for +# the respective C++ standard version. # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with -# preference for an extended mode. +# preference for no added switch, and then for an extended mode. # # The third argument, if specified 'mandatory' or if left unspecified, # indicates that baseline support for the specified C++ standard is @@ -33,21 +33,26 @@ # Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov # Copyright (c) 2015 Paul Norman # Copyright (c) 2015 Moritz Klammler +# Copyright (c) 2016, 2018 Krzesimir Nowak +# Copyright (c) 2019 Enji Cooper +# Copyright (c) 2020 Jason Merrill +# Copyright (c) 2021 Jörn Heusipp # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 3 +#serial 18 dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl - m4_if([$1], [11], [], - [$1], [14], [], - [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])], + m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"], + [$1], [14], [ax_cxx_compile_alternatives="14 1y"], + [$1], [17], [ax_cxx_compile_alternatives="17 1z"], + [$1], [20], [ax_cxx_compile_alternatives="20"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], @@ -59,18 +64,21 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])]) AC_LANG_PUSH([C++])dnl ac_success=no - AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, - ax_cv_cxx_compile_cxx$1, - [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [ax_cv_cxx_compile_cxx$1=yes], - [ax_cv_cxx_compile_cxx$1=no])]) - if test x$ax_cv_cxx_compile_cxx$1 = xyes; then - ac_success=yes - fi + + m4_if([$2], [], [dnl + AC_CACHE_CHECK(whether $CXX supports C++$1 features by default, + ax_cv_cxx_compile_cxx$1, + [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], + [ax_cv_cxx_compile_cxx$1=yes], + [ax_cv_cxx_compile_cxx$1=no])]) + if test x$ax_cv_cxx_compile_cxx$1 = xyes; then + ac_success=yes + fi]) m4_if([$2], [noext], [], [dnl if test x$ac_success = xno; then - for switch in -std=gnu++$1 -std=gnu++0x; do + for alternative in ${ax_cxx_compile_alternatives}; do + switch="-std=gnu++${alternative}" cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, @@ -82,6 +90,9 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl CXX="$ac_save_CXX"]) if eval test x\$$cachevar = xyes; then CXX="$CXX $switch" + if test -n "$CXXCPP" ; then + CXXCPP="$CXXCPP $switch" + fi ac_success=yes break fi @@ -93,19 +104,36 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" - for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) - AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, - $cachevar, - [ac_save_CXX="$CXX" - CXX="$CXX $switch" - AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], - [eval $cachevar=yes], - [eval $cachevar=no]) - CXX="$ac_save_CXX"]) - if eval test x\$$cachevar = xyes; then - CXX="$CXX $switch" - ac_success=yes + dnl MSVC needs -std:c++NN for C++17 and later (default is C++14) + for alternative in ${ax_cxx_compile_alternatives}; do + for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do + if test x"$switch" = xMSVC; then + dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide + dnl with -std=c++17. We suffix the cache variable name with _MSVC to + dnl avoid this. + switch=-std:c++${alternative} + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC]) + else + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) + fi + AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, + $cachevar, + [ac_save_CXX="$CXX" + CXX="$CXX $switch" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])], + [eval $cachevar=yes], + [eval $cachevar=no]) + CXX="$ac_save_CXX"]) + if eval test x\$$cachevar = xyes; then + CXX="$CXX $switch" + if test -n "$CXXCPP" ; then + CXXCPP="$CXXCPP $switch" + fi + ac_success=yes + break + fi + done + if test x$ac_success = xyes; then break fi done @@ -134,7 +162,6 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 ) - dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], @@ -142,6 +169,23 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 ) +dnl Test body for checking C++17 support + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], + _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 +) + +dnl Test body for checking C++20 support + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20], + _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_20 +) + dnl Tests for new features in C++11 @@ -154,7 +198,11 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[ #error "This is not a C++ compiler" -#elif __cplusplus < 201103L +// MSVC always sets __cplusplus to 199711L in older versions; newer versions +// only set it correctly if /Zc:__cplusplus is specified as well as a +// /std:c++NN switch: +// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +#elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -179,11 +227,13 @@ namespace cxx11 struct Base { + virtual ~Base() {} virtual void f() {} }; struct Derived : public Base { + virtual ~Derived() override {} virtual void f() override {} }; @@ -443,7 +493,7 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[ #error "This is not a C++ compiler" -#elif __cplusplus < 201402L +#elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" @@ -512,7 +562,7 @@ namespace cxx14 } - namespace test_digit_seperators + namespace test_digit_separators { constexpr auto ten_million = 100'000'000; @@ -554,3 +604,415 @@ namespace cxx14 #endif // __cplusplus >= 201402L ]]) + + +dnl Tests for new features in C++17 + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[ + +// If the compiler admits that it is not ready for C++17, why torture it? +// Hopefully, this will speed up the test. + +#ifndef __cplusplus + +#error "This is not a C++ compiler" + +#elif __cplusplus < 201703L && !defined _MSC_VER + +#error "This is not a C++17 compiler" + +#else + +#include +#include +#include + +namespace cxx17 +{ + + namespace test_constexpr_lambdas + { + + constexpr int foo = [](){return 42;}(); + + } + + namespace test::nested_namespace::definitions + { + + } + + namespace test_fold_expression + { + + template + int multiply(Args... args) + { + return (args * ... * 1); + } + + template + bool all(Args... args) + { + return (args && ...); + } + + } + + namespace test_extended_static_assert + { + + static_assert (true); + + } + + namespace test_auto_brace_init_list + { + + auto foo = {5}; + auto bar {5}; + + static_assert(std::is_same, decltype(foo)>::value); + static_assert(std::is_same::value); + } + + namespace test_typename_in_template_template_parameter + { + + template typename X> struct D; + + } + + namespace test_fallthrough_nodiscard_maybe_unused_attributes + { + + int f1() + { + return 42; + } + + [[nodiscard]] int f2() + { + [[maybe_unused]] auto unused = f1(); + + switch (f1()) + { + case 17: + f1(); + [[fallthrough]]; + case 42: + f1(); + } + return f1(); + } + + } + + namespace test_extended_aggregate_initialization + { + + struct base1 + { + int b1, b2 = 42; + }; + + struct base2 + { + base2() { + b3 = 42; + } + int b3; + }; + + struct derived : base1, base2 + { + int d; + }; + + derived d1 {{1, 2}, {}, 4}; // full initialization + derived d2 {{}, {}, 4}; // value-initialized bases + + } + + namespace test_general_range_based_for_loop + { + + struct iter + { + int i; + + int& operator* () + { + return i; + } + + const int& operator* () const + { + return i; + } + + iter& operator++() + { + ++i; + return *this; + } + }; + + struct sentinel + { + int i; + }; + + bool operator== (const iter& i, const sentinel& s) + { + return i.i == s.i; + } + + bool operator!= (const iter& i, const sentinel& s) + { + return !(i == s); + } + + struct range + { + iter begin() const + { + return {0}; + } + + sentinel end() const + { + return {5}; + } + }; + + void f() + { + range r {}; + + for (auto i : r) + { + [[maybe_unused]] auto v = i; + } + } + + } + + namespace test_lambda_capture_asterisk_this_by_value + { + + struct t + { + int i; + int foo() + { + return [*this]() + { + return i; + }(); + } + }; + + } + + namespace test_enum_class_construction + { + + enum class byte : unsigned char + {}; + + byte foo {42}; + + } + + namespace test_constexpr_if + { + + template + int f () + { + if constexpr(cond) + { + return 13; + } + else + { + return 42; + } + } + + } + + namespace test_selection_statement_with_initializer + { + + int f() + { + return 13; + } + + int f2() + { + if (auto i = f(); i > 0) + { + return 3; + } + + switch (auto i = f(); i + 4) + { + case 17: + return 2; + + default: + return 1; + } + } + + } + + namespace test_template_argument_deduction_for_class_templates + { + + template + struct pair + { + pair (T1 p1, T2 p2) + : m1 {p1}, + m2 {p2} + {} + + T1 m1; + T2 m2; + }; + + void f() + { + [[maybe_unused]] auto p = pair{13, 42u}; + } + + } + + namespace test_non_type_auto_template_parameters + { + + template + struct B + {}; + + B<5> b1; + B<'a'> b2; + + } + + namespace test_structured_bindings + { + + int arr[2] = { 1, 2 }; + std::pair pr = { 1, 2 }; + + auto f1() -> int(&)[2] + { + return arr; + } + + auto f2() -> std::pair& + { + return pr; + } + + struct S + { + int x1 : 2; + volatile double y1; + }; + + S f3() + { + return {}; + } + + auto [ x1, y1 ] = f1(); + auto& [ xr1, yr1 ] = f1(); + auto [ x2, y2 ] = f2(); + auto& [ xr2, yr2 ] = f2(); + const auto [ x3, y3 ] = f3(); + + } + + namespace test_exception_spec_type_system + { + + struct Good {}; + struct Bad {}; + + void g1() noexcept; + void g2(); + + template + Bad + f(T*, T*); + + template + Good + f(T1*, T2*); + + static_assert (std::is_same_v); + + } + + namespace test_inline_variables + { + + template void f(T) + {} + + template inline T g(T) + { + return T{}; + } + + template<> inline void f<>(int) + {} + + template<> int g<>(int) + { + return 5; + } + + } + +} // namespace cxx17 + +#endif // __cplusplus < 201703L && !defined _MSC_VER + +]]) + + +dnl Tests for new features in C++20 + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[ + +#ifndef __cplusplus + +#error "This is not a C++ compiler" + +#elif __cplusplus < 202002L && !defined _MSC_VER + +#error "This is not a C++20 compiler" + +#else + +#include + +namespace cxx20 +{ + +// As C++20 supports feature test macros in the standard, there is no +// immediate need to actually test for feature availability on the +// Autoconf side. + +} // namespace cxx20 + +#endif // __cplusplus < 202002L && !defined _MSC_VER + +]]) diff --git a/m4/gettext.m4 b/m4/gettext.m4 new file mode 100644 index 0000000000000000000000000000000000000000..f4492405bd2901c3546fc900eaee4b2217bf80e2 --- /dev/null +++ b/m4/gettext.m4 @@ -0,0 +1,386 @@ +# gettext.m4 serial 72 (gettext-0.21.1) +dnl Copyright (C) 1995-2014, 2016, 2018-2020 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 be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser 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 Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006, 2008-2010. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL must be one of 'external', 'use-libtool'. +dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and +dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'. +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). +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 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. + m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])]) + m4_if(m4_if([$1], [], [old])[]m4_if([$1], [no-libtool], [old]), [old], + [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. +])]) + m4_if([$2], [], , [m4_if([$2], [need-ngettext], , [m4_if([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + m4_if([$1], [external], [no], [yes])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + m4_if(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 not documented, we avoid it. + m4_if(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]) + + m4_if(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 + m4_if(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 +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings; +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [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. + m4_if(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 +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [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 +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *); +#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) +#else +#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 +#endif +$gt_revision_test_code + ]], + [[ +bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION + ]])], + [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 + + m4_if(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="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" + LTLIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $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 + + m4_if(gt_included_intl, yes, [ + dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes' + dnl because some of the testsuite requires it. + BUILD_INCLUDED_LIBINTL=yes + + 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 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], []) + + +dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4 new file mode 100644 index 0000000000000000000000000000000000000000..b9223241b43670d990e32c5ff212661a3bdec1e8 --- /dev/null +++ b/m4/host-cpu-c-abi.m4 @@ -0,0 +1,678 @@ +# host-cpu-c-abi.m4 serial 15 +dnl Copyright (C) 2002-2022 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 and Sam Steingold. + +dnl Sets the HOST_CPU variable to the canonical name of the CPU. +dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its +dnl C language ABI (application binary interface). +dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in +dnl config.h. +dnl +dnl This canonical name can be used to select a particular assembly language +dnl source file that will interoperate with C code on the given host. +dnl +dnl For example: +dnl * 'i386' and 'sparc' are different canonical names, because code for i386 +dnl will not run on SPARC CPUs and vice versa. They have different +dnl instruction sets. +dnl * 'sparc' and 'sparc64' are different canonical names, because code for +dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code +dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit +dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit +dnl mode, but not both. +dnl * 'mips' and 'mipsn32' are different canonical names, because they use +dnl different argument passing and return conventions for C functions, and +dnl although the instruction set of 'mips' is a large subset of the +dnl instruction set of 'mipsn32'. +dnl * 'mipsn32' and 'mips64' are different canonical names, because they use +dnl different sizes for the C types like 'int' and 'void *', and although +dnl the instruction sets of 'mipsn32' and 'mips64' are the same. +dnl * The same canonical name is used for different endiannesses. You can +dnl determine the endianness through preprocessor symbols: +dnl - 'arm': test __ARMEL__. +dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. +dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. +dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 +dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because +dnl - Instructions that do not exist on all of these CPUs (cmpxchg, +dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your +dnl assembly language source files use such instructions, you will +dnl need to make the distinction. +dnl - Speed of execution of the common instruction set is reasonable across +dnl the entire family of CPUs. If you have assembly language source files +dnl that are optimized for particular CPU types (like GNU gmp has), you +dnl will need to make the distinction. +dnl See . +AC_DEFUN([gl_HOST_CPU_C_ABI], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_C_ASM]) + AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], + [case "$host_cpu" in + +changequote(,)dnl + i[34567]86 ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=i386 + ;; + + x86_64 ) + # On x86_64 systems, the C compiler may be generating code in one of + # these ABIs: + # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. + # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 + # with native Windows (mingw, MSVC). + # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (defined __x86_64__ || defined __amd64__ \ + || defined _M_X64 || defined _M_AMD64) + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=x86_64-x32], + [gl_cv_host_cpu_c_abi=x86_64])], + [gl_cv_host_cpu_c_abi=i386]) + ;; + +changequote(,)dnl + alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) +changequote([,])dnl + gl_cv_host_cpu_c_abi=alpha + ;; + + arm* | aarch64 ) + # Assume arm with EABI. + # On arm64 systems, the C compiler may be generating code in one of + # these ABIs: + # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. + # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. + # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __aarch64__ + int ok; + #else + error fail + #endif + ]])], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __ILP32__ || defined _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=arm64-ilp32], + [gl_cv_host_cpu_c_abi=arm64])], + [# Don't distinguish little-endian and big-endian arm, since they + # don't require different machine code for simple operations and + # since the user can distinguish them through the preprocessor + # defines __ARMEL__ vs. __ARMEB__. + # But distinguish arm which passes floating-point arguments and + # return values in integer registers (r0, r1, ...) - this is + # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which + # passes them in float registers (s0, s1, ...) and double registers + # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer + # sets the preprocessor defines __ARM_PCS (for the first case) and + # __ARM_PCS_VFP (for the second case), but older GCC does not. + echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c + # Look for a reference to the register d0 in the .s file. + AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 + if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then + gl_cv_host_cpu_c_abi=armhf + else + gl_cv_host_cpu_c_abi=arm + fi + rm -f conftest* + ]) + ;; + + hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) + # On hppa, the C compiler may be generating 32-bit code or 64-bit + # code. In the latter case, it defines _LP64 and __LP64__. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef __LP64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=hppa64], + [gl_cv_host_cpu_c_abi=hppa]) + ;; + + ia64* ) + # On ia64 on HP-UX, the C compiler may be generating 64-bit code or + # 32-bit code. In the latter case, it defines _ILP32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#ifdef _ILP32 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=ia64-ilp32], + [gl_cv_host_cpu_c_abi=ia64]) + ;; + + mips* ) + # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this + # at 32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mips64], + [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIN32. + # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but + # may later get defined by ), and _MIPS_SIM == _ABIO32. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if (_MIPS_SIM == _ABIN32) + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=mipsn32], + [gl_cv_host_cpu_c_abi=mips])]) + ;; + + powerpc* ) + # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. + # No need to distinguish them here; the caller may distinguish + # them based on the OS. + # On powerpc64 systems, the C compiler may still be generating + # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may + # be generating 64-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __powerpc64__ || defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [# On powerpc64, there are two ABIs on Linux: The AIX compatible + # one and the ELFv2 one. The latter defines _CALL_ELF=2. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined _CALL_ELF && _CALL_ELF == 2 + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=powerpc64-elfv2], + [gl_cv_host_cpu_c_abi=powerpc64]) + ], + [gl_cv_host_cpu_c_abi=powerpc]) + ;; + + rs6000 ) + gl_cv_host_cpu_c_abi=powerpc + ;; + + riscv32 | riscv64 ) + # There are 2 architectures (with variants): rv32* and rv64*. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if __riscv_xlen == 64 + int ok; + #else + error fail + #endif + ]])], + [cpu=riscv64], + [cpu=riscv32]) + # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. + # Size of 'long' and 'void *': + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ + int ok; + #else + error fail + #endif + ]])], + [main_abi=lp64], + [main_abi=ilp32]) + # Float ABIs: + # __riscv_float_abi_double: + # 'float' and 'double' are passed in floating-point registers. + # __riscv_float_abi_single: + # 'float' are passed in floating-point registers. + # __riscv_float_abi_soft: + # No values are passed in floating-point registers. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_double + int ok; + #else + error fail + #endif + ]])], + [float_abi=d], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __riscv_float_abi_single + int ok; + #else + error fail + #endif + ]])], + [float_abi=f], + [float_abi='']) + ]) + gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" + ;; + + s390* ) + # On s390x, the C compiler may be generating 64-bit (= s390x) code + # or 31-bit (= s390) code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __LP64__ || defined __s390x__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=s390x], + [gl_cv_host_cpu_c_abi=s390]) + ;; + + sparc | sparc64 ) + # UltraSPARCs running Linux have `uname -m` = "sparc64", but the + # C compiler still generates 32-bit code. + AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if defined __sparcv9 || defined __arch64__ + int ok; + #else + error fail + #endif + ]])], + [gl_cv_host_cpu_c_abi=sparc64], + [gl_cv_host_cpu_c_abi=sparc]) + ;; + + *) + gl_cv_host_cpu_c_abi="$host_cpu" + ;; + esac + ]) + + dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. + HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` + HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" + AC_SUBST([HOST_CPU]) + AC_SUBST([HOST_CPU_C_ABI]) + + # This was + # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) + # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) + # earlier, but KAI C++ 3.2d doesn't like this. + sed -e 's/-/_/g' >> confdefs.h <. +dnl Don't make changes that are incompatible with that documentation! + +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 +#include + ]], + [[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 +#include + ]], + [[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 + am_cv_func_iconv_works=no + for ac_iconv_const in '' 'const'; do + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include + +#ifndef ICONV_CONST +# define ICONV_CONST $ac_iconv_const +#endif + ]], + [[int result = 0; + /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from + successful returns. This is even documented in + */ + { + iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); + if (cd_utf8_to_88591 != (iconv_t)(-1)) + { + static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ + char buf[10]; + ICONV_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, + &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 ICONV_CONST char input[] = "\263"; + char buf[10]; + ICONV_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, + &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 ICONV_CONST char input[] = "\304"; + static char buf[2] = { (char)0xDE, (char)0xAD }; + ICONV_CONST char *inptr = input; + size_t inbytesleft = 1; + char *outptr = buf; + size_t outbytesleft = 1; + size_t res = iconv (cd_88591_to_utf8, + &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 ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; + char buf[50]; + ICONV_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, + &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. */ + { + /* Try standardized names. */ + iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); + /* Try IRIX, OSF/1 names. */ + iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); + /* Try AIX names. */ + iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); + /* Try HP-UX names. */ + iconv_t cd4 = iconv_open ("utf8", "eucJP"); + if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) + && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) + result |= 16; + if (cd1 != (iconv_t)(-1)) + iconv_close (cd1); + if (cd2 != (iconv_t)(-1)) + iconv_close (cd2); + if (cd3 != (iconv_t)(-1)) + iconv_close (cd3); + if (cd4 != (iconv_t)(-1)) + iconv_close (cd4); + } + return result; +]])], + [am_cv_func_iconv_works=yes], , + [case "$host_os" in + aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; + *) am_cv_func_iconv_works="guessing yes" ;; + esac]) + test "$am_cv_func_iconv_works" = no || break + done + 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, in order to 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. +AC_DEFUN_ONCE([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_CACHE_CHECK([whether iconv is compatible with its POSIX signature], + [gl_cv_iconv_nonconst], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); + ]], + [[]])], + [gl_cv_iconv_nonconst=yes], + [gl_cv_iconv_nonconst=no]) + ]) + else + dnl When compiling GNU libiconv on a system that does not have iconv yet, + dnl pick the POSIX compliant declaration without 'const'. + gl_cv_iconv_nonconst=yes + fi + if test $gl_cv_iconv_nonconst = yes; then + iconv_arg1="" + else + iconv_arg1="const" + fi + AC_DEFINE_UNQUOTED([ICONV_CONST], [$iconv_arg1], + [Define as const if the declaration of iconv() needs const.]) + dnl Also substitute ICONV_CONST in the gnulib generated . + m4_ifdef([gl_ICONV_H_DEFAULTS], + [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) + if test $gl_cv_iconv_nonconst != yes; then + ICONV_CONST="const" + fi + ]) +]) diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4 new file mode 100644 index 0000000000000000000000000000000000000000..ecc88d6e74065f3d571ec580f05e7ffe55590a4f --- /dev/null +++ b/m4/intlmacosx.m4 @@ -0,0 +1,65 @@ +# intlmacosx.m4 serial 8 (gettext-0.20.2) +dnl Copyright (C) 2004-2014, 2016, 2019-2022 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 be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser 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 Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Checks for special options needed on Mac OS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in Mac OS X 10.4. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + [gt_cv_func_CFPreferencesCopyAppValue], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFPreferencesCopyAppValue(NULL, NULL)]])], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], + [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent, + dnl because in macOS 10.13.4 it has the following behaviour: + dnl When two or more languages are specified in the + dnl "System Preferences > Language & Region > Preferred Languages" panel, + dnl it returns en_CC where CC is the territory (even when English is not among + dnl the preferred languages!). What we want instead is what + dnl CFLocaleCopyCurrent returned in earlier macOS releases and what + dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the + dnl first among the preferred languages and CC is the territory. + AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[CFLocaleCopyPreferredLanguages();]])], + [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], + [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], + [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ + || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 new file mode 100644 index 0000000000000000000000000000000000000000..934207a7658781f67c79c02d9facc518759c60c5 --- /dev/null +++ b/m4/lib-ld.m4 @@ -0,0 +1,168 @@ +# lib-ld.m4 serial 10 +dnl Copyright (C) 1996-2003, 2009-2022 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 Subroutines of libtool.m4, +dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid +dnl collision with libtool.m4. + +dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], +[# I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 /dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +fi + +if test -n "$LD"; then + AC_MSG_CHECKING([for ld]) +elif test "$GCC" = yes; then + AC_MSG_CHECKING([for ld used by $CC]) +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +if test -n "$LD"; then + # Let the user override the test with a path. + : +else + AC_CACHE_VAL([acl_cv_path_LD], + [ + acl_cv_path_LD= # Final result of this test + ac_prog=ld # Program to search in $PATH + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + acl_output=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $acl_output in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` + while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do + acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` + done + # Got the pathname. No search in PATH is needed. + acl_cv_path_LD="$acl_output" + ac_prog= + ;; + "") + # If it fails, then pretend we aren't using GCC. + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + fi + if test -n "$ac_prog"; then + # Search for $ac_prog in $PATH. + acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$acl_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + acl_libext="$acl_cv_libext" + acl_shlibext="$acl_cv_shlibext" + acl_libname_spec="$acl_cv_libname_spec" + acl_library_names_spec="$acl_cv_library_names_spec" + acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + acl_hardcode_direct="$acl_cv_hardcode_direct" + acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE([rpath], + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_FROMPACKAGE(name, package) +dnl declares that libname comes from the given package. The configure file +dnl will then not have a --with-libname-prefix option but a +dnl --with-package-prefix option. Several libraries can come from the same +dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar +dnl macro call that searches for libname. +AC_DEFUN([AC_LIB_FROMPACKAGE], +[ + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_frompackage_]NAME, [$2]) + popdef([NAME]) + pushdef([PACK],[$2]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + define([acl_libsinpackage_]PACKUP, + m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) + popdef([PACKUP]) + popdef([PACK]) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found +dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) + pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) + pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + ]) + AC_ARG_WITH(PACK[-prefix], +[[ --with-]]PACK[[-prefix[=DIR] search for ]]PACKLIBS[[ in DIR/include and DIR/lib + --without-]]PACK[[-prefix don't search for ]]PACKLIBS[[ in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + eval additional_libdir2=\"$exec_prefix/$acl_libdirstem2\" + eval additional_libdir3=\"$exec_prefix/$acl_libdirstem3\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + additional_libdir2="$withval/$acl_libdirstem2" + additional_libdir3="$withval/$acl_libdirstem3" + fi + fi +]) + if test "X$additional_libdir2" = "X$additional_libdir"; then + additional_libdir2= + fi + if test "X$additional_libdir3" = "X$additional_libdir"; then + additional_libdir3= + fi + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + LIB[]NAME[]_PREFIX= + dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been + dnl computed. So it has to be reset here. + HAVE_LIB[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + eval libname=\"$acl_libname_spec\" # typically: libname=lib$name + if test -n "$acl_shlibext"; then + shrext=".$acl_shlibext" # typically: shrext=.so + else + shrext= + fi + if test $use_additional = yes; then + for additional_libdir_variable in additional_libdir additional_libdir2 additional_libdir3; do + if test "X$found_dir" = "X"; then + eval dir=\$$additional_libdir_variable + if test -n "$dir"; then + dnl The same code as in the loop below: + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + fi + fi + done + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + dnl First look for a shared library. + if test -n "$acl_shlibext"; then + if test -f "$dir/$libname$shrext" && acl_is_expected_elfclass < "$dir/$libname$shrext"; then + found_dir="$dir" + found_so="$dir/$libname$shrext" + else + if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then + ver=`(cd "$dir" && \ + for f in "$libname$shrext".*; do echo "$f"; done \ + | sed -e "s,^$libname$shrext\\\\.,," \ + | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ + | sed 1q ) 2>/dev/null` + if test -n "$ver" && test -f "$dir/$libname$shrext.$ver" && acl_is_expected_elfclass < "$dir/$libname$shrext.$ver"; then + found_dir="$dir" + found_so="$dir/$libname$shrext.$ver" + fi + else + eval library_names=\"$acl_library_names_spec\" + for f in $library_names; do + if test -f "$dir/$f" && acl_is_expected_elfclass < "$dir/$f"; then + found_dir="$dir" + found_so="$dir/$f" + break + fi + done + fi + fi + fi + dnl Then look for a static library. + if test "X$found_dir" = "X"; then + if test -f "$dir/$libname.$acl_libext" && ${AR-ar} -p "$dir/$libname.$acl_libext" | acl_is_expected_elfclass; then + found_dir="$dir" + found_a="$dir/$libname.$acl_libext" + fi + fi + if test "X$found_dir" != "X"; then + if test -f "$dir/$libname.la"; then + found_la="$dir/$libname.la" + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no \ + || test "X$found_dir" = "X/usr/$acl_libdirstem" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem2" \ + || test "X$found_dir" = "X/usr/$acl_libdirstem3"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$acl_hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$acl_hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem2 | */$acl_libdirstem2/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + */$acl_libdirstem3 | */$acl_libdirstem3/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem3/"'*$,,'` + if test "$name" = '$1'; then + LIB[]NAME[]_PREFIX="$basedir" + fi + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + dependency_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $dependency_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$dependency_libdir" != "X/usr/$acl_libdirstem" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem2" \ + && test "X$dependency_libdir" != "X/usr/$acl_libdirstem3"; then + haveit= + if test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem2" \ + || test "X$dependency_libdir" = "X/usr/local/$acl_libdirstem3"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + dnl Really add $dependency_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$dependency_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$dependency_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$dependency_libdir"; then + dnl Really add $dependency_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$dependency_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + dnl But on GNU systems, ignore -lc options, because + dnl - linking with libc is the default anyway, + dnl - linking with libc.a may produce an error + dnl "/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `strcmp' with pointer equality in `/usr/lib/libc.a(strcmp.o)' can not be used when making an executable; recompile with -fPIE and relink with -pie" + dnl or may produce an executable that always crashes, see + dnl . + dep=`echo "X$dep" | sed -e 's/^X-l//'` + if test "X$dep" != Xc \ + || case $host_os in + linux* | gnu* | k*bsd*-gnu) false ;; + *) true ;; + esac; then + names_next_round="$names_next_round $dep" + fi + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + done + dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi + popdef([PACKLIBS]) + popdef([PACKUP]) + popdef([PACK]) + popdef([NAME]) +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2" \ + && test "X$dir" != "X/usr/$acl_libdirstem3"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem" \ + && test "X$dir" != "X/usr/$acl_libdirstem2" \ + && test "X$dir" != "X/usr/$acl_libdirstem3"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$acl_hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$acl_hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 new file mode 100644 index 0000000000000000000000000000000000000000..999f712f5acd4102385e4eadedf78913aa773a5f --- /dev/null +++ b/m4/lib-prefix.m4 @@ -0,0 +1,323 @@ +# lib-prefix.m4 serial 20 +dnl Copyright (C) 2001-2005, 2008-2022 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. + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_ARG_WITH([lib-prefix], +[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir]], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates +dnl - a function acl_is_expected_elfclass, that tests whether standard input +dn; has a 32-bit or 64-bit ELF header, depending on the host CPU ABI, +dnl - 3 variables acl_libdirstem, acl_libdirstem2, acl_libdirstem3, containing +dnl the basename of the libdir to try in turn, either "lib" or "lib64" or +dnl "lib/64" or "lib32" or "lib/sparcv9" or "lib/amd64" or similar. +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib, lib32, and lib64. + dnl On most glibc systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. However, on + dnl Arch Linux based distributions, it's the opposite: 32-bit libraries go + dnl under $prefix/lib32 and 64-bit libraries go under $prefix/lib. + dnl We determine the compiler's default mode by looking at the compiler's + dnl library search path. If at least one of its elements ends in /lib64 or + dnl points to a directory whose absolute pathname ends in /lib64, we use that + dnl for 64-bit ABIs. Similarly for 32-bit ABIs. Otherwise we use the default, + dnl namely "lib". + dnl On Solaris systems, the current practice is that on a system supporting + dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under + dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or + dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) + + AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf], + [AC_EGREP_CPP([Extensible Linking Format], + [#if defined __ELF__ || (defined __linux__ && defined __EDG__) + Extensible Linking Format + #endif + ], + [gl_cv_elf=yes], + [gl_cv_elf=no]) + ]) + if test $gl_cv_elf = yes; then + # Extract the ELF class of a file (5th byte) in decimal. + # Cf. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header + if od -A x < /dev/null >/dev/null 2>/dev/null; then + # Use POSIX od. + func_elfclass () + { + od -A n -t d1 -j 4 -N 1 + } + else + # Use BSD hexdump. + func_elfclass () + { + dd bs=1 count=1 skip=4 2>/dev/null | hexdump -e '1/1 "%3d "' + echo + } + fi + # Use 'expr', not 'test', to compare the values of func_elfclass, because on + # Solaris 11 OpenIndiana and Solaris 11 OmniOS, the result is 001 or 002, + # not 1 or 2. +changequote(,)dnl + case $HOST_CPU_C_ABI_32BIT in + yes) + # 32-bit ABI. + acl_is_expected_elfclass () + { + expr "`func_elfclass | sed -e 's/[ ]//g'`" = 1 > /dev/null + } + ;; + no) + # 64-bit ABI. + acl_is_expected_elfclass () + { + expr "`func_elfclass | sed -e 's/[ ]//g'`" = 2 > /dev/null + } + ;; + *) + # Unknown. + acl_is_expected_elfclass () + { + : + } + ;; + esac +changequote([,])dnl + else + acl_is_expected_elfclass () + { + : + } + fi + + dnl Allow the user to override the result by setting acl_cv_libdirstems. + AC_CACHE_CHECK([for the common suffixes of directories in the library search path], + [acl_cv_libdirstems], + [dnl Try 'lib' first, because that's the default for libdir in GNU, see + dnl . + acl_libdirstem=lib + acl_libdirstem2= + acl_libdirstem3= + case "$host_os" in + solaris*) + dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment + dnl . + dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." + dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the + dnl symlink is missing, so we set acl_libdirstem2 too. + if test $HOST_CPU_C_ABI_32BIT = no; then + acl_libdirstem2=lib/64 + case "$host_cpu" in + sparc*) acl_libdirstem3=lib/sparcv9 ;; + i*86 | x86_64) acl_libdirstem3=lib/amd64 ;; + esac + fi + ;; + *) + dnl If $CC generates code for a 32-bit ABI, the libraries are + dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. + dnl Similarly, if $CC generates code for a 64-bit ABI, the libraries + dnl are surely under $prefix/lib or $prefix/lib64, not $prefix/lib32. + dnl Find the compiler's search path. However, non-system compilers + dnl sometimes have odd library search paths. But we can't simply invoke + dnl '/usr/bin/gcc -print-search-dirs' because that would not take into + dnl account the -m32/-m31 or -m64 options from the $CC or $CFLAGS. + searchpath=`(LC_ALL=C $CC $CPPFLAGS $CFLAGS -print-search-dirs) 2>/dev/null \ + | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test $HOST_CPU_C_ABI_32BIT != no; then + # 32-bit or unknown ABI. + if test -d /usr/lib32; then + acl_libdirstem2=lib32 + fi + fi + if test $HOST_CPU_C_ABI_32BIT != yes; then + # 64-bit or unknown ABI. + if test -d /usr/lib64; then + acl_libdirstem3=lib64 + fi + fi + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib32/ | */lib32 ) acl_libdirstem2=lib32 ;; + */lib64/ | */lib64 ) acl_libdirstem3=lib64 ;; + */../ | */.. ) + # Better ignore directories of this form. They are misleading. + ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib32 ) acl_libdirstem2=lib32 ;; + */lib64 ) acl_libdirstem3=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + if test $HOST_CPU_C_ABI_32BIT = yes; then + # 32-bit ABI. + acl_libdirstem3= + fi + if test $HOST_CPU_C_ABI_32BIT = no; then + # 64-bit ABI. + acl_libdirstem2= + fi + fi + ;; + esac + test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" + test -n "$acl_libdirstem3" || acl_libdirstem3="$acl_libdirstem" + acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2,$acl_libdirstem3" + ]) + dnl Decompose acl_cv_libdirstems into acl_libdirstem, acl_libdirstem2, and + dnl acl_libdirstem3. +changequote(,)dnl + acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` + acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,//' -e 's/,.*//'` + acl_libdirstem3=`echo "$acl_cv_libdirstems" | sed -e 's/^[^,]*,[^,]*,//' -e 's/,.*//'` +changequote([,])dnl +]) diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 0000000000000000000000000000000000000000..7c11c90f52639a67aff3c090b5368d1301097466 --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,32 @@ +# nls.m4 serial 6 (gettext-0.20.2) +dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019-2022 Free +dnl 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 be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser 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 Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 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 new file mode 100644 index 0000000000000000000000000000000000000000..2f14f8e2b1bb2fb8933e5f169fd35fa7512d8564 --- /dev/null +++ b/m4/po.m4 @@ -0,0 +1,454 @@ +# po.m4 serial 32 (gettext-0.21.1) +dnl Copyright (C) 1995-2014, 2016, 2018-2022 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 be used in projects which are not available under +dnl the GNU General Public License or the GNU Lesser 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 Lesser General Public License, and the rest of the GNU +dnl gettext package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 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([AC_PROG_SED])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.20]) + + 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 `$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 Test whether it is GNU msgmerge >= 0.20. + if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' + else + dnl Test whether it is GNU msgmerge >= 0.12. + if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then + MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' + else + dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is + dnl slow. But this is not a big problem, as such old gettext versions are + dnl hardly in use any more. + MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' + fi + fi + AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) + + 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"` + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + 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" | "$presentlang"_* | "$presentlang".* | "$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. + 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 < "$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" < /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" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ([2.53]) + +# 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 + # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which + # contains only /bin. Note that ksh looks also at the FPATH variable, + # so we have to set that as well for the test. + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ + || PATH_SEPARATOR=';' + } +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 m4_if([$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. +m4_if([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test m4_if([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$][$1]) +else + AC_MSG_RESULT([no]) +fi +AC_SUBST([$1])dnl +]) diff --git a/po/Makefile.in.in b/po/Makefile.in.in new file mode 100644 index 0000000000000000000000000000000000000000..6b25f0d9167a5e1acdacdd54546e1a9911068f61 --- /dev/null +++ b/po/Makefile.in.in @@ -0,0 +1,510 @@ +# Makefile for PO directory in any package using GNU gettext. +# Copyright (C) 1995-2000 Ulrich Drepper +# Copyright (C) 2000-2020 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# Origin: gettext-0.21 +GETTEXT_MACRO_VERSION = 0.20 + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + +SED = @SED@ +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@ + +# When building gettext-tools, we prefer to use the built programs +# rather than installed programs. However, we can't do that when we +# are cross compiling. +CROSS_COMPILING = @CROSS_COMPILING@ + +GMSGFMT_ = @GMSGFMT@ +GMSGFMT_no = @GMSGFMT@ +GMSGFMT_yes = @GMSGFMT_015@ +GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) +XGETTEXT_ = @XGETTEXT@ +XGETTEXT_no = @XGETTEXT@ +XGETTEXT_yes = @XGETTEXT_015@ +XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) +MSGMERGE = @MSGMERGE@ +MSGMERGE_UPDATE = @MSGMERGE@ --update +MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ +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@ + +POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot +POFILESDEPS_yes = $(POFILESDEPS_) +POFILESDEPS_no = +POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) + +DISTFILESDEPS_ = update-po +DISTFILESDEPS_yes = $(DISTFILESDEPS_) +DISTFILESDEPS_no = +DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) + +# Makevars gets inserted here. (Don't remove this line!) + +all: all-@USE_NLS@ + + +.SUFFIXES: +.SUFFIXES: .po .gmo .sed .sin .nop .po-create .po-update + +# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs. +# The GNU Coding Standards say in +# : +# "GNU distributions usually contain some files which are not source files +# ... . Since these files normally appear in the source directory, they +# should always appear in the source directory, not in the build directory. +# So Makefile rules to update them should put the updated files in the +# source directory." +# Therefore we put these files in the source directory, not the build directory. + +# During .po -> .gmo conversion, take into account the most recent changes to +# the .pot file. This eliminates the need to update the .po files when the +# .pot file has changed, which would be troublesome if the .po files are put +# under version control. +$(GMOFILES): $(srcdir)/$(DOMAIN).pot +.po.gmo: + @lang=`echo $* | sed -e 's,.*/,,'`; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}rm -f $${lang}.gmo && $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.1po && rm -f $${lang}.1po"; \ + cd $(srcdir) && \ + rm -f $${lang}.gmo && \ + $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) -o $${lang}.1po $${lang}.po $(DOMAIN).pot && \ + $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.1po && \ + mv t-$${lang}.gmo $${lang}.gmo && \ + rm -f $${lang}.1po + +.sin.sed: + sed -e '/^#/d' $< > t-$@ + mv t-$@ $@ + + +all-yes: $(srcdir)/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, $(srcdir)/stamp-po is a nop (i.e. a phony target). + +# $(srcdir)/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 from a version control system, and the $(DOMAIN).pot +# file is not under version control, "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. +$(srcdir)/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 $(srcdir)/stamp-po" && \ + echo timestamp > $(srcdir)/stamp-poT && \ + mv $(srcdir)/stamp-poT $(srcdir)/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 + package_gnu="$(PACKAGE_GNU)"; \ + test -n "$$package_gnu" || { \ + 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 -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \ + else \ + LC_ALL=C grep -i 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ + fi; \ + } | grep -v 'libtool:' >/dev/null; then \ + package_gnu=yes; \ + else \ + package_gnu=no; \ + fi; \ + }; \ + if test "$$package_gnu" = "yes"; then \ + package_prefix='GNU '; \ + else \ + package_prefix=''; \ + 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: \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + ;; \ + *) \ + $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ + --add-comments=TRANSLATORS: \ + --files-from=$(srcdir)/POTFILES.in \ + --copyright-holder='$(COPYRIGHT_HOLDER)' \ + --package-name="$${package_prefix}@PACKAGE@" \ + --package-version='@VERSION@' \ + --msgid-bugs-address="$$msgid_bugs_address" \ + $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ + ;; \ + esac + test ! -f $(DOMAIN).po || { \ + if test -f $(srcdir)/$(DOMAIN).pot-header; then \ + sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ + cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po && \ + rm -f $(DOMAIN).1po \ + || exit 1; \ + fi; \ + 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): $(POFILESDEPS) + @test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(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} --previous $${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-5] | 0.1[0-5].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --previous $${lang}.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} --previous $${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: + +install-dvi install-ps install-pdf install-html: + +mostlyclean: + rm -f remove-potcdate.sed + rm -f $(srcdir)/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 + +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 $(srcdir)/$(DOMAIN).pot $(srcdir)/stamp-po $(GMOFILES) + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(srcdir)/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"; \ + else \ + case $(XGETTEXT) in \ + :) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because a suitable 'xgettext' program was not found in PATH." 1>&2;; \ + *) echo "Warning: Creating a tarball without '$(DOMAIN).pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file." 1>&2;; \ + esac; \ + 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" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ + tmpdir=`pwd`; \ + echo "$$lang:"; \ + test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ + echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous $$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-5] | 0.1[0-5].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + 0.1[6-7] | 0.1[6-7].*) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --previous -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ + *) \ + $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang --previous -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/Rules-quot b/po/Rules-quot new file mode 100644 index 0000000000000000000000000000000000000000..18c024bf45ae303dd97f9cfb5e0bd807a9cb2282 --- /dev/null +++ b/po/Rules-quot @@ -0,0 +1,62 @@ +# Special Makefile rules for English message catalogs with quotation marks. +# +# Copyright (C) 2001-2017 Free Software Foundation, Inc. +# This file, Rules-quot, and its auxiliary files (listed under +# DISTFILES.common.extra1) are free software; the Free Software Foundation +# gives unlimited permission to use, copy, distribute, and modify them. + +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-tools" && test "$(CROSS_COMPILING)" != "yes"; 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) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ + | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ + { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ + $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ + ;; \ + *) \ + $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ + ;; \ + esac } 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 new file mode 100644 index 0000000000000000000000000000000000000000..4b937aa517bcff9f5adfc2a01d6d780445999297 --- /dev/null +++ b/po/boldquot.sed @@ -0,0 +1,10 @@ +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.gmo b/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..13525305c0d7c867b946b9af4c2f3bd4141212d8 Binary files /dev/null and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 0c4c49202526e88cd85a462263587a6d62145b56..19383dd9534f7e95ba224a0fe8d1fd3f051fc82b 100644 --- a/po/de.po +++ b/po/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2022-11-02 13:30+0100\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" "PO-Revision-Date: 2009-06-29 15:15+0200\n" "Last-Translator: Michael Münch \n" "Language-Team: German\n" @@ -49,18 +49,18 @@ msgstr "" "GARANTIE,\n" "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n" -#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11754 +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 #: src/unstrip.c:311 #, c-format msgid "memory exhausted" msgstr "Kein Speicher mehr verfügbar" -#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:51 +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 #: libelf/elf_error.c:59 msgid "no error" msgstr "kein Fehler" -#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:53 +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 #: libelf/elf_error.c:90 msgid "out of memory" msgstr "nicht genügend Speicher" @@ -97,7 +97,7 @@ msgstr "Fehler bei Datenausgabe" msgid "no backend support available" msgstr "keine Backend-Unterstützung verfügbar" -#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:52 +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 #: libelf/elf_error.c:62 msgid "unknown error" msgstr "unbekannter Fehler" @@ -112,7 +112,7 @@ msgstr "" msgid "invalid character '\\%o' at line %d; ignored" msgstr "" -#: libcpu/i386_parse.y:553 +#: libcpu/i386_parse.y:555 #, c-format msgid "while reading i386 CPU description: %s at line %d" msgstr "" @@ -228,7 +228,7 @@ msgstr "Ungültige DWARF Version" msgid "invalid directory index" msgstr "ungültiger Verzeichnisindex" -#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73 +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 msgid "address out of range" msgstr "Außerhalb des Adressbereiches" @@ -259,7 +259,7 @@ msgstr "Ungültiger Zeilenindex" msgid "invalid address range index" msgstr "Ungültiger Adressbereichs Index" -#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74 +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 msgid "no matching address range" msgstr "Kein passender Adressbereich" @@ -373,175 +373,175 @@ msgstr "nicht genügend Speicher" msgid "No modules recognized in core file" msgstr "Keine Module in der Kerndatei gefunden" -#: libdwfl/libdwflP.h:54 +#: libdwfl/libdwflP.h:50 msgid "See errno" msgstr "" -#: libdwfl/libdwflP.h:55 +#: libdwfl/libdwflP.h:51 msgid "See elf_errno" msgstr "" -#: libdwfl/libdwflP.h:56 +#: libdwfl/libdwflP.h:52 msgid "See dwarf_errno" msgstr "" -#: libdwfl/libdwflP.h:57 +#: libdwfl/libdwflP.h:53 msgid "See ebl_errno (XXX missing)" msgstr "" -#: libdwfl/libdwflP.h:58 +#: libdwfl/libdwflP.h:54 msgid "gzip decompression failed" msgstr "" -#: libdwfl/libdwflP.h:59 +#: libdwfl/libdwflP.h:55 msgid "bzip2 decompression failed" msgstr "" -#: libdwfl/libdwflP.h:60 +#: libdwfl/libdwflP.h:56 msgid "LZMA decompression failed" msgstr "" -#: libdwfl/libdwflP.h:61 +#: libdwfl/libdwflP.h:57 msgid "zstd decompression failed" msgstr "" -#: libdwfl/libdwflP.h:62 +#: libdwfl/libdwflP.h:58 msgid "no support library found for machine" msgstr "" -#: libdwfl/libdwflP.h:63 +#: libdwfl/libdwflP.h:59 msgid "Callbacks missing for ET_REL file" msgstr "" -#: libdwfl/libdwflP.h:64 +#: libdwfl/libdwflP.h:60 msgid "Unsupported relocation type" msgstr "" -#: libdwfl/libdwflP.h:65 +#: libdwfl/libdwflP.h:61 msgid "r_offset is bogus" msgstr "" -#: libdwfl/libdwflP.h:66 libelf/elf_error.c:114 libelf/elf_error.c:174 +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 msgid "offset out of range" msgstr "Offset ausserhalb des Bereichs" -#: libdwfl/libdwflP.h:67 +#: libdwfl/libdwflP.h:63 #, fuzzy msgid "relocation refers to undefined symbol" msgstr "Zeige Grösse der definierten Symbole" -#: libdwfl/libdwflP.h:68 +#: libdwfl/libdwflP.h:64 msgid "Callback returned failure" msgstr "" -#: libdwfl/libdwflP.h:69 +#: libdwfl/libdwflP.h:65 #, fuzzy msgid "No DWARF information found" msgstr "keine DWARF Information" -#: libdwfl/libdwflP.h:70 +#: libdwfl/libdwflP.h:66 msgid "No symbol table found" msgstr "" -#: libdwfl/libdwflP.h:71 +#: libdwfl/libdwflP.h:67 #, fuzzy msgid "No ELF program headers" msgstr "Programm-Köpfe anzeigen" -#: libdwfl/libdwflP.h:72 +#: libdwfl/libdwflP.h:68 msgid "address range overlaps an existing module" msgstr "" -#: libdwfl/libdwflP.h:75 +#: libdwfl/libdwflP.h:71 msgid "image truncated" msgstr "" -#: libdwfl/libdwflP.h:76 +#: libdwfl/libdwflP.h:72 #, fuzzy msgid "ELF file opened" msgstr "keine ELF Datei" -#: libdwfl/libdwflP.h:77 +#: libdwfl/libdwflP.h:73 #, fuzzy msgid "not a valid ELF file" msgstr "Ungültige ELF Datei" -#: libdwfl/libdwflP.h:78 +#: libdwfl/libdwflP.h:74 #, fuzzy msgid "cannot handle DWARF type description" msgstr "konnte Elf-Deskriptor nicht erzeugen: %s" -#: libdwfl/libdwflP.h:79 +#: libdwfl/libdwflP.h:75 msgid "ELF file does not match build ID" msgstr "" -#: libdwfl/libdwflP.h:80 +#: libdwfl/libdwflP.h:76 #, fuzzy msgid "corrupt .gnu.prelink_undo section data" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: libdwfl/libdwflP.h:81 +#: libdwfl/libdwflP.h:77 msgid "Internal error due to ebl" msgstr "" -#: libdwfl/libdwflP.h:82 +#: libdwfl/libdwflP.h:78 msgid "Missing data in core file" msgstr "" -#: libdwfl/libdwflP.h:83 +#: libdwfl/libdwflP.h:79 #, fuzzy msgid "Invalid register" msgstr "ungültiger Parameter" -#: libdwfl/libdwflP.h:84 +#: libdwfl/libdwflP.h:80 #, fuzzy #| msgid "no reference value" msgid "Unknown register value" msgstr "Kein Referenz-Wert" -#: libdwfl/libdwflP.h:85 +#: libdwfl/libdwflP.h:81 msgid "Error reading process memory" msgstr "" -#: libdwfl/libdwflP.h:86 +#: libdwfl/libdwflP.h:82 msgid "Couldn't find architecture of any ELF" msgstr "" -#: libdwfl/libdwflP.h:87 +#: libdwfl/libdwflP.h:83 msgid "Error parsing /proc filesystem" msgstr "" -#: libdwfl/libdwflP.h:88 +#: libdwfl/libdwflP.h:84 #, fuzzy msgid "Invalid DWARF" msgstr "DWARF ungültig" -#: libdwfl/libdwflP.h:89 +#: libdwfl/libdwflP.h:85 msgid "Unsupported DWARF" msgstr "" -#: libdwfl/libdwflP.h:90 +#: libdwfl/libdwflP.h:86 msgid "Unable to find more threads" msgstr "" -#: libdwfl/libdwflP.h:91 +#: libdwfl/libdwflP.h:87 msgid "Dwfl already has attached state" msgstr "" -#: libdwfl/libdwflP.h:92 +#: libdwfl/libdwflP.h:88 msgid "Dwfl has no attached state" msgstr "" -#: libdwfl/libdwflP.h:93 +#: libdwfl/libdwflP.h:89 msgid "Unwinding not supported for this architecture" msgstr "" -#: libdwfl/libdwflP.h:94 +#: libdwfl/libdwflP.h:90 #, fuzzy msgid "Invalid argument" msgstr "ungültiger Parameter" -#: libdwfl/libdwflP.h:95 +#: libdwfl/libdwflP.h:91 #, fuzzy msgid "Not an ET_CORE ELF file" msgstr "Ungültige ELF Datei" @@ -553,7 +553,7 @@ msgstr "Kein Backend" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 -#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 msgid "" msgstr "" @@ -647,7 +647,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:86 src/readelf.c:6378 +#: libelf/elf_error.c:86 src/readelf.c:6758 #, c-format msgid "invalid encoding" msgstr "ungültige Kodierung" @@ -735,8 +735,8 @@ msgstr "data/scn Unterschied" msgid "invalid section header" msgstr "ungültiger Abschnitts-Header" -#: libelf/elf_error.c:190 src/readelf.c:10266 src/readelf.c:10866 -#: src/readelf.c:10967 src/readelf.c:11149 +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 #, c-format msgid "invalid data" msgstr "Ungültige Daten" @@ -863,46 +863,52 @@ msgstr "" msgid "Show demangled symbols (ARG is always ignored)" msgstr "" -#: src/addr2line.c:77 +#: src/addr2line.c:76 +#, fuzzy +#| msgid "Display only defined symbols" +msgid "Show demangled symbols" +msgstr "Zeige nur definierte Symbole" + +#: src/addr2line.c:78 msgid "Print all information on one line, and indent inlines" msgstr "" -#: src/addr2line.c:79 +#: src/addr2line.c:80 msgid "Show relative file names without compilation directory" msgstr "" -#: src/addr2line.c:81 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 #: src/strings.c:77 msgid "Miscellaneous:" msgstr "Verschiedenes:" #. Short description of program. -#: src/addr2line.c:89 +#: src/addr2line.c:90 msgid "" "Locate source files and line information for ADDRs (in a.out by default)." msgstr "" #. Strings for arguments in help texts. -#: src/addr2line.c:93 +#: src/addr2line.c:94 msgid "[ADDR...]" msgstr "" -#: src/addr2line.c:526 +#: src/addr2line.c:530 #, fuzzy msgid "Section syntax requires exactly one module" msgstr "Abschnitt syntax benötigt genau ein Modul" -#: src/addr2line.c:548 +#: src/addr2line.c:552 #, c-format msgid "offset %# lies outside section '%s'" msgstr "" -#: src/addr2line.c:658 +#: src/addr2line.c:662 #, c-format msgid "cannot find symbol '%s'" msgstr "Konnte Symbol '%s' nicht finden" -#: src/addr2line.c:663 +#: src/addr2line.c:667 #, c-format msgid "offset %# lies outside contents of '%s'" msgstr "" @@ -1386,8 +1392,8 @@ msgid "Suppress some error output (counterpart to --verbose)" msgstr "" #. Strings for arguments in help texts. -#: src/elfclassify.c:979 src/elfcompress.c:1358 src/elflint.c:76 -#: src/readelf.c:160 +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 msgid "FILE..." msgstr "DATEI..." @@ -1653,334 +1659,340 @@ msgstr "" msgid "cannot get relocation: %s" msgstr "" -#: src/elfcompress.c:117 src/strip.c:305 src/unstrip.c:116 +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 #, c-format msgid "-o option specified twice" msgstr "" -#: src/elfcompress.c:124 +#: src/elfcompress.c:135 #, fuzzy, c-format msgid "-t option specified twice" msgstr "Option -d zweimal angegeben" -#: src/elfcompress.c:133 +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "" + +#: src/elfcompress.c:150 #, fuzzy, c-format msgid "unknown compression type '%s'" msgstr "unbekannter Typ" #. We need at least one input file. -#: src/elfcompress.c:145 src/elfcompress.c:1369 +#: src/elfcompress.c:162 src/elfcompress.c:1447 #, fuzzy, c-format msgid "No input file given" msgstr "Eingabedatei '%s' ignoriert" -#: src/elfcompress.c:151 src/elfcompress.c:1373 +#: src/elfcompress.c:168 src/elfcompress.c:1451 #, c-format msgid "Only one input file allowed together with '-o'" msgstr "" -#: src/elfcompress.c:1331 +#: src/elfcompress.c:1408 msgid "Place (de)compressed output into FILE" msgstr "" -#: src/elfcompress.c:1334 +#: src/elfcompress.c:1411 msgid "" "What type of compression to apply. TYPE can be 'none' (decompress), " -"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-" -"gnu' (.zdebug GNU style compression, 'gnu' is an alias)" +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" msgstr "" -#: src/elfcompress.c:1337 +#: src/elfcompress.c:1415 msgid "" "SECTION name to (de)compress, SECTION is an extended wildcard pattern " "(defaults to '.?(z)debug*')" msgstr "" -#: src/elfcompress.c:1340 +#: src/elfcompress.c:1418 msgid "Print a message for each section being (de)compressed" msgstr "" -#: src/elfcompress.c:1343 +#: src/elfcompress.c:1421 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:1346 src/strip.c:92 +#: src/elfcompress.c:1424 src/strip.c:92 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "" -#: src/elfcompress.c:1349 +#: src/elfcompress.c:1427 #, fuzzy msgid "Be silent when a section cannot be compressed" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elfcompress.c:1359 +#: src/elfcompress.c:1437 msgid "Compress or decompress sections in an ELF file." msgstr "" -#: src/elflint.c:62 +#: src/elflint.c:63 msgid "Be extremely strict, flag level 2 features." msgstr "" -#: src/elflint.c:63 +#: src/elflint.c:64 msgid "Do not print anything if successful" msgstr "Gebe nichts aus, wenn erfolgreich" -#: src/elflint.c:64 +#: src/elflint.c:65 msgid "Binary is a separate debuginfo file" msgstr "" -#: src/elflint.c:66 +#: src/elflint.c:67 msgid "" "Binary has been created with GNU ld and is therefore known to be broken in " "certain ways" msgstr "" #. Short description of program. -#: src/elflint.c:72 +#: src/elflint.c:73 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "" -#: src/elflint.c:153 src/readelf.c:391 +#: src/elflint.c:154 src/readelf.c:413 #, fuzzy, c-format msgid "cannot open input file '%s'" msgstr "Kann Eingabedatei nicht öffnen" -#: src/elflint.c:160 +#: src/elflint.c:161 #, fuzzy, c-format msgid "cannot generate Elf descriptor for '%s': %s\n" msgstr "kann Elf-Deskriptor nicht erzeugen: %s\n" -#: src/elflint.c:179 +#: src/elflint.c:180 #, c-format msgid "error while closing Elf descriptor: %s\n" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/elflint.c:183 +#: src/elflint.c:184 msgid "No errors" msgstr "Keine Fehler" -#: src/elflint.c:218 src/readelf.c:603 +#: src/elflint.c:219 src/readelf.c:625 msgid "Missing file name.\n" msgstr "Dateiname fehlt.\n" -#: src/elflint.c:283 +#: src/elflint.c:284 #, c-format msgid " error while freeing sub-ELF descriptor: %s\n" msgstr "" #. We cannot do anything. -#: src/elflint.c:291 +#: src/elflint.c:292 #, fuzzy, c-format msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "Keine ELF-Datei - sie hat die falschen Magic Bytes am Anfang\n" -#: src/elflint.c:356 +#: src/elflint.c:358 #, c-format msgid "e_ident[%d] == %d is no known class\n" msgstr "" -#: src/elflint.c:361 +#: src/elflint.c:363 #, c-format msgid "e_ident[%d] == %d is no known data encoding\n" msgstr "" -#: src/elflint.c:365 +#: src/elflint.c:367 #, c-format msgid "unknown ELF header version number e_ident[%d] == %d\n" msgstr "" -#: src/elflint.c:373 +#: src/elflint.c:375 #, c-format msgid "unsupported OS ABI e_ident[%d] == '%s'\n" msgstr "" -#: src/elflint.c:379 +#: src/elflint.c:381 #, c-format msgid "unsupported ABI version e_ident[%d] == %d\n" msgstr "" -#: src/elflint.c:384 +#: src/elflint.c:386 #, c-format msgid "e_ident[%zu] is not zero\n" msgstr "e_ident[%zu] ist nicht null\n" -#: src/elflint.c:389 +#: src/elflint.c:391 #, c-format msgid "unknown object file type %d\n" msgstr "" -#: src/elflint.c:396 +#: src/elflint.c:398 #, c-format msgid "unknown machine type %d\n" msgstr "" -#: src/elflint.c:400 +#: src/elflint.c:402 #, c-format msgid "unknown object file version\n" msgstr "" -#: src/elflint.c:406 +#: src/elflint.c:408 #, c-format msgid "invalid program header offset\n" msgstr "" -#: src/elflint.c:408 +#: src/elflint.c:410 #, c-format msgid "executables and DSOs cannot have zero program header offset\n" msgstr "" -#: src/elflint.c:412 +#: src/elflint.c:414 #, c-format msgid "invalid number of program header entries\n" msgstr "" -#: src/elflint.c:420 +#: src/elflint.c:422 #, c-format msgid "invalid section header table offset\n" msgstr "" -#: src/elflint.c:423 +#: src/elflint.c:425 #, c-format msgid "section header table must be present\n" msgstr "" -#: src/elflint.c:437 +#: src/elflint.c:439 #, c-format msgid "invalid number of section header table entries\n" msgstr "" -#: src/elflint.c:454 +#: src/elflint.c:456 #, c-format msgid "invalid section header index\n" msgstr "" -#: src/elflint.c:472 +#: src/elflint.c:474 #, c-format msgid "Can only check %u headers, shnum was %u\n" msgstr "" -#: src/elflint.c:486 +#: src/elflint.c:488 #, fuzzy, c-format msgid "invalid number of program header table entries\n" msgstr "Ungültige Anzahl von Parametern.\n" -#: src/elflint.c:503 +#: src/elflint.c:505 #, c-format msgid "Can only check %u headers, phnum was %u\n" msgstr "" -#: src/elflint.c:508 +#: src/elflint.c:510 #, c-format msgid "invalid machine flags: %s\n" msgstr "" -#: src/elflint.c:515 src/elflint.c:532 +#: src/elflint.c:517 src/elflint.c:534 #, c-format msgid "invalid ELF header size: %hd\n" msgstr "" -#: src/elflint.c:518 src/elflint.c:535 +#: src/elflint.c:520 src/elflint.c:537 #, c-format msgid "invalid program header size: %hd\n" msgstr "" -#: src/elflint.c:521 src/elflint.c:538 +#: src/elflint.c:523 src/elflint.c:540 #, c-format msgid "invalid program header position or size\n" msgstr "" -#: src/elflint.c:524 src/elflint.c:541 +#: src/elflint.c:526 src/elflint.c:543 #, c-format msgid "invalid section header size: %hd\n" msgstr "" -#: src/elflint.c:527 src/elflint.c:544 +#: src/elflint.c:529 src/elflint.c:546 #, c-format msgid "invalid section header position or size\n" msgstr "" -#: src/elflint.c:589 +#: src/elflint.c:591 #, c-format msgid "" "section [%2d] '%s': section with SHF_GROUP flag set not part of a section " "group\n" msgstr "" -#: src/elflint.c:593 +#: src/elflint.c:595 #, c-format msgid "" "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" msgstr "" -#: src/elflint.c:609 src/elflint.c:1497 src/elflint.c:1548 src/elflint.c:1654 -#: src/elflint.c:1990 src/elflint.c:2316 src/elflint.c:2942 src/elflint.c:3105 -#: src/elflint.c:3253 src/elflint.c:3455 src/elflint.c:4464 +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "" -#: src/elflint.c:622 src/elflint.c:1661 +#: src/elflint.c:624 src/elflint.c:1699 #, 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:645 +#: src/elflint.c:647 #, c-format msgid "" "section [%2d] '%s': symbol table cannot have more than one extended index " "section\n" msgstr "" -#: src/elflint.c:657 +#: src/elflint.c:659 #, c-format msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" msgstr "" -#: src/elflint.c:661 +#: src/elflint.c:663 #, c-format msgid "" "section [%2u] '%s': number of local entries in 'st_info' larger than table " "size\n" msgstr "" -#: src/elflint.c:670 +#: src/elflint.c:672 #, c-format msgid "section [%2d] '%s': cannot get symbol %d: %s\n" msgstr "" -#: src/elflint.c:675 src/elflint.c:678 src/elflint.c:681 src/elflint.c:684 -#: src/elflint.c:687 src/elflint.c:690 +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 #, c-format msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" msgstr "" -#: src/elflint.c:693 +#: src/elflint.c:695 #, c-format msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" msgstr "" -#: src/elflint.c:703 +#: src/elflint.c:705 #, c-format msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" msgstr "" -#: src/elflint.c:712 +#: src/elflint.c:714 #, c-format msgid "section [%2d] '%s': symbol %zu: invalid name value\n" msgstr "" -#: src/elflint.c:727 +#: src/elflint.c:729 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): too large section index but no extended " "section index section\n" msgstr "" -#: src/elflint.c:733 +#: src/elflint.c:735 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " @@ -1988,119 +2000,119 @@ msgid "" msgstr "" #. || sym->st_shndx > SHN_HIRESERVE always false -#: src/elflint.c:745 +#: src/elflint.c:747 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" msgstr "ungültiger Abschnittsindex" -#: src/elflint.c:753 +#: src/elflint.c:755 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:759 +#: src/elflint.c:761 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:764 +#: src/elflint.c:766 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" msgstr "" -#: src/elflint.c:772 +#: src/elflint.c:774 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " "files\n" msgstr "" -#: src/elflint.c:776 +#: src/elflint.c:778 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" msgstr "" -#: src/elflint.c:780 +#: src/elflint.c:782 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" msgstr "" -#: src/elflint.c:831 +#: src/elflint.c:833 #, 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:837 src/elflint.c:862 src/elflint.c:911 +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " "section [%2d] '%s'\n" msgstr "" -#: src/elflint.c:846 +#: src/elflint.c:848 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " "have SHF_TLS flag set\n" msgstr "" -#: src/elflint.c:856 src/elflint.c:904 +#: src/elflint.c:858 src/elflint.c:906 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " "section [%2d] '%s'\n" msgstr "" -#: src/elflint.c:883 +#: src/elflint.c:885 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " "entry\n" msgstr "" -#: src/elflint.c:889 +#: src/elflint.c:891 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " "header entry\n" msgstr "" -#: src/elflint.c:897 +#: src/elflint.c:899 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " "[%2d] '%s'\n" msgstr "" -#: src/elflint.c:924 +#: src/elflint.c:926 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " "sh_info\n" msgstr "" -#: src/elflint.c:931 +#: src/elflint.c:933 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " "described in sh_info\n" msgstr "" -#: src/elflint.c:938 +#: src/elflint.c:940 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:988 +#: src/elflint.c:990 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " "[%2d]\n" msgstr "" -#: src/elflint.c:995 +#: src/elflint.c:997 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " @@ -2110,1372 +2122,1367 @@ 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:1011 +#: src/elflint.c:1013 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " "match %s section address %#\n" msgstr "" -#: src/elflint.c:1018 +#: src/elflint.c:1020 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " "match %s section size %\n" msgstr "" -#: src/elflint.c:1026 +#: src/elflint.c:1028 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " "section\n" msgstr "" -#: src/elflint.c:1042 +#: src/elflint.c:1044 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " "segment address %#\n" msgstr "" -#: src/elflint.c:1049 +#: src/elflint.c:1051 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " "segment size %\n" msgstr "" -#: src/elflint.c:1062 +#: src/elflint.c:1064 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" "default visibility\n" msgstr "" -#: src/elflint.c:1066 +#: src/elflint.c:1068 #, 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:1104 +#: src/elflint.c:1106 #, fuzzy, c-format msgid "section [%2d] '%s': cannot get section data.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:1120 +#: src/elflint.c:1122 #, c-format msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" msgstr "" -#: src/elflint.c:1131 src/elflint.c:1184 +#: src/elflint.c:1133 src/elflint.c:1186 #, c-format msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" msgstr "" -#: src/elflint.c:1156 src/elflint.c:1209 +#: src/elflint.c:1158 src/elflint.c:1211 #, c-format msgid "" "section [%2d] '%s': relative relocations after index %d as specified by " "DT_RELCOUNT\n" msgstr "" -#: src/elflint.c:1162 src/elflint.c:1215 +#: src/elflint.c:1164 src/elflint.c:1217 #, c-format msgid "" "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " "specified %d relative relocations\n" msgstr "" -#: src/elflint.c:1174 +#: src/elflint.c:1176 #, c-format msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" msgstr "" -#: src/elflint.c:1257 +#: src/elflint.c:1259 #, c-format msgid "section [%2d] '%s': invalid destination section index\n" msgstr "" -#: src/elflint.c:1269 +#: src/elflint.c:1271 #, c-format msgid "section [%2d] '%s': invalid destination section type\n" msgstr "" -#: src/elflint.c:1277 +#: src/elflint.c:1279 #, c-format msgid "section [%2d] '%s': sh_info should be zero\n" msgstr "" -#: src/elflint.c:1285 +#: src/elflint.c:1287 #, 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:1293 -#, c-format -msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n" -msgstr "" - -#: src/elflint.c:1353 +#: src/elflint.c:1365 #, c-format msgid "text relocation flag set but there is no read-only segment\n" msgstr "" -#: src/elflint.c:1380 +#: src/elflint.c:1392 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid type\n" msgstr "" -#: src/elflint.c:1388 +#: src/elflint.c:1400 #, c-format msgid "" "section [%2d] '%s': relocation %zu: relocation type invalid for the file " "type\n" msgstr "" -#: src/elflint.c:1396 +#: src/elflint.c:1408 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" msgstr "" -#: src/elflint.c:1414 +#: src/elflint.c:1426 #, c-format msgid "" "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " "be used with %s\n" msgstr "" -#: src/elflint.c:1431 +#: src/elflint.c:1443 #, c-format msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" msgstr "" -#: src/elflint.c:1446 +#: src/elflint.c:1458 #, c-format msgid "" "section [%2d] '%s': relocation %zu: copy relocation against symbol of type " "%s\n" msgstr "" -#: src/elflint.c:1467 +#: src/elflint.c:1479 #, c-format msgid "" "section [%2d] '%s': relocation %zu: read-only section modified but text " "relocation flag not set\n" msgstr "" -#: src/elflint.c:1482 +#: src/elflint.c:1494 #, c-format msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n" msgstr "" -#: src/elflint.c:1522 src/elflint.c:1573 +#: src/elflint.c:1534 src/elflint.c:1585 #, c-format msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" msgstr "" -#: src/elflint.c:1649 +#: src/elflint.c:1687 #, c-format msgid "more than one dynamic section present\n" msgstr "" -#: src/elflint.c:1667 +#: src/elflint.c:1705 #, c-format msgid "" "section [%2d]: referenced as string table for section [%2d] '%s' but section " "link value is invalid\n" msgstr "" -#: src/elflint.c:1675 +#: src/elflint.c:1713 #, c-format msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" msgstr "" -#: src/elflint.c:1680 src/elflint.c:1969 +#: src/elflint.c:1718 src/elflint.c:2008 #, c-format msgid "section [%2d] '%s': sh_info not zero\n" msgstr "" -#: src/elflint.c:1690 +#: src/elflint.c:1728 #, c-format msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" msgstr "" -#: src/elflint.c:1698 +#: src/elflint.c:1736 #, c-format msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" msgstr "" -#: src/elflint.c:1705 +#: src/elflint.c:1743 #, c-format msgid "section [%2d] '%s': entry %zu: unknown tag\n" msgstr "" -#: src/elflint.c:1716 +#: src/elflint.c:1754 #, c-format msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" msgstr "" -#: src/elflint.c:1726 +#: src/elflint.c:1764 #, c-format msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" msgstr "" -#: src/elflint.c:1744 +#: src/elflint.c:1782 #, c-format msgid "" "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" msgstr "" -#: src/elflint.c:1757 +#: src/elflint.c:1795 #, 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:1800 +#: src/elflint.c:1839 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" msgstr "" -#: src/elflint.c:1815 +#: src/elflint.c:1854 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must be valid offset in section " "[%2d] '%s'\n" msgstr "" -#: src/elflint.c:1835 src/elflint.c:1863 +#: src/elflint.c:1874 src/elflint.c:1902 #, c-format msgid "section [%2d] '%s': contains %s entry but not %s\n" msgstr "" -#: src/elflint.c:1847 +#: src/elflint.c:1886 #, c-format msgid "section [%2d] '%s': mandatory tag %s not present\n" msgstr "" -#: src/elflint.c:1856 +#: src/elflint.c:1895 #, c-format msgid "section [%2d] '%s': no hash section present\n" msgstr "" -#: src/elflint.c:1871 src/elflint.c:1878 +#: src/elflint.c:1910 src/elflint.c:1917 #, c-format msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n" msgstr "" -#: src/elflint.c:1888 src/elflint.c:1892 +#: src/elflint.c:1927 src/elflint.c:1931 #, c-format msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" msgstr "" -#: src/elflint.c:1898 +#: src/elflint.c:1937 #, c-format msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" msgstr "" -#: src/elflint.c:1909 src/elflint.c:1913 src/elflint.c:1917 src/elflint.c:1921 +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 #, c-format msgid "section [%2d] '%s': %s tag missing in prelinked executable\n" msgstr "" -#: src/elflint.c:1933 +#: src/elflint.c:1972 #, c-format msgid "" "section [%2d] '%s': only relocatable files can have extended section index\n" msgstr "" -#: src/elflint.c:1943 +#: src/elflint.c:1982 #, c-format msgid "" "section [%2d] '%s': extended section index section not for symbol table\n" msgstr "" -#: src/elflint.c:1947 +#: src/elflint.c:1986 #, c-format msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" msgstr "" -#: src/elflint.c:1952 +#: src/elflint.c:1991 #, c-format msgid "cannot get data for symbol section\n" msgstr "" -#: src/elflint.c:1955 +#: src/elflint.c:1994 #, c-format msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" msgstr "" -#: src/elflint.c:1964 +#: src/elflint.c:2003 #, c-format msgid "section [%2d] '%s': extended index table too small for symbol table\n" msgstr "" -#: src/elflint.c:1979 +#: src/elflint.c:2018 #, c-format msgid "" "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " "same symbol table\n" msgstr "" -#: src/elflint.c:1997 +#: src/elflint.c:2036 #, c-format msgid "symbol 0 should have zero extended section index\n" msgstr "" -#: src/elflint.c:2009 +#: src/elflint.c:2048 #, c-format msgid "cannot get data for symbol %zu\n" msgstr "" -#: src/elflint.c:2014 +#: src/elflint.c:2053 #, c-format msgid "extended section index is % but symbol index is not XINDEX\n" msgstr "" -#: src/elflint.c:2031 src/elflint.c:2088 +#: src/elflint.c:2070 src/elflint.c:2127 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" msgstr "" -#: src/elflint.c:2045 src/elflint.c:2102 +#: src/elflint.c:2084 src/elflint.c:2141 #, c-format msgid "section [%2d] '%s': chain array too large\n" msgstr "" -#: src/elflint.c:2059 src/elflint.c:2116 +#: src/elflint.c:2098 src/elflint.c:2155 #, c-format msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" msgstr "" -#: src/elflint.c:2069 +#: src/elflint.c:2108 #, c-format msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" msgstr "" -#: src/elflint.c:2126 +#: src/elflint.c:2165 #, c-format msgid "section [%2d] '%s': hash chain reference % out of bounds\n" msgstr "" -#: src/elflint.c:2139 +#: src/elflint.c:2178 #, c-format msgid "section [%2d] '%s': not enough data\n" msgstr "" -#: src/elflint.c:2151 +#: src/elflint.c:2190 #, c-format msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n" msgstr "" -#: src/elflint.c:2167 +#: src/elflint.c:2206 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected at " "least %ld)\n" msgstr "" -#: src/elflint.c:2176 +#: src/elflint.c:2215 #, c-format msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n" msgstr "" -#: src/elflint.c:2210 +#: src/elflint.c:2249 #, c-format msgid "" "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" msgstr "" -#: src/elflint.c:2231 +#: src/elflint.c:2270 #, c-format msgid "" "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " "undefined\n" msgstr "" -#: src/elflint.c:2244 +#: src/elflint.c:2283 #, c-format msgid "" "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" msgstr "" -#: src/elflint.c:2253 +#: src/elflint.c:2292 #, c-format msgid "" "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" msgstr "" -#: src/elflint.c:2283 +#: src/elflint.c:2322 #, c-format msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" msgstr "" -#: src/elflint.c:2288 +#: src/elflint.c:2327 #, c-format msgid "" "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" msgstr "" -#: src/elflint.c:2294 +#: src/elflint.c:2333 #, c-format msgid "section [%2d] '%s': bitmask does not match names in the hash table\n" msgstr "" -#: src/elflint.c:2307 +#: src/elflint.c:2346 #, c-format msgid "section [%2d] '%s': relocatable files cannot have hash tables\n" msgstr "" -#: src/elflint.c:2325 +#: src/elflint.c:2364 #, c-format msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" msgstr "" -#: src/elflint.c:2329 +#: src/elflint.c:2368 #, c-format msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" msgstr "" -#: src/elflint.c:2339 +#: src/elflint.c:2378 #, c-format msgid "section [%2d] '%s': hash table entry size incorrect\n" msgstr "" -#: src/elflint.c:2344 +#: src/elflint.c:2383 #, c-format msgid "section [%2d] '%s': not marked to be allocated\n" msgstr "" -#: src/elflint.c:2349 +#: src/elflint.c:2388 #, c-format msgid "" "section [%2d] '%s': hash table has not even room for initial administrative " "entries\n" msgstr "" -#: src/elflint.c:2398 +#: src/elflint.c:2437 #, c-format msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n" msgstr "" -#: src/elflint.c:2422 src/elflint.c:2487 src/elflint.c:2522 +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 #, c-format msgid "hash section [%2zu] '%s' does not contain enough data\n" msgstr "" -#: src/elflint.c:2443 +#: src/elflint.c:2482 #, c-format msgid "hash section [%2zu] '%s' has zero bit mask words\n" msgstr "" -#: src/elflint.c:2454 src/elflint.c:2498 src/elflint.c:2535 +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 #, c-format msgid "hash section [%2zu] '%s' uses too much data\n" msgstr "" -#: src/elflint.c:2469 +#: src/elflint.c:2508 #, c-format msgid "" "hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " "%, nentries: %\n" msgstr "" -#: src/elflint.c:2556 +#: src/elflint.c:2595 #, c-format msgid "hash section [%2zu] '%s' invalid sh_entsize\n" msgstr "" -#: src/elflint.c:2566 src/elflint.c:2570 +#: src/elflint.c:2605 src/elflint.c:2609 #, c-format msgid "section [%2zu] '%s': reference to symbol index 0\n" msgstr "" -#: src/elflint.c:2577 +#: src/elflint.c:2616 #, 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:2589 +#: src/elflint.c:2628 #, 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:2605 +#: src/elflint.c:2644 #, c-format msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" msgstr "" -#: src/elflint.c:2625 +#: src/elflint.c:2664 #, c-format msgid "" "section [%2d] '%s': section groups only allowed in relocatable object files\n" msgstr "" -#: src/elflint.c:2636 +#: src/elflint.c:2675 #, c-format msgid "section [%2d] '%s': cannot get symbol table: %s\n" msgstr "" -#: src/elflint.c:2641 +#: src/elflint.c:2680 #, c-format msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n" msgstr "" -#: src/elflint.c:2647 +#: src/elflint.c:2686 #, c-format msgid "section [%2d] '%s': invalid symbol index in sh_info\n" msgstr "" -#: src/elflint.c:2652 +#: src/elflint.c:2691 #, c-format msgid "section [%2d] '%s': sh_flags not zero\n" msgstr "" -#: src/elflint.c:2659 +#: src/elflint.c:2698 #, c-format msgid "section [%2d] '%s': cannot get symbol for signature\n" msgstr "" -#: src/elflint.c:2663 +#: src/elflint.c:2702 #, c-format msgid "section [%2d] '%s': cannot get symbol name for signature\n" msgstr "" -#: src/elflint.c:2668 +#: src/elflint.c:2707 #, c-format msgid "section [%2d] '%s': signature symbol cannot be empty string\n" msgstr "" -#: src/elflint.c:2674 +#: src/elflint.c:2713 #, c-format msgid "section [%2d] '%s': sh_flags not set correctly\n" msgstr "" -#: src/elflint.c:2680 +#: src/elflint.c:2719 #, c-format msgid "section [%2d] '%s': cannot get data: %s\n" msgstr "" -#: src/elflint.c:2689 +#: src/elflint.c:2728 #, c-format msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" msgstr "" -#: src/elflint.c:2695 +#: src/elflint.c:2734 #, c-format msgid "section [%2d] '%s': section group without flags word\n" msgstr "" -#: src/elflint.c:2703 +#: src/elflint.c:2742 #, c-format msgid "section [%2d] '%s': section group without member\n" msgstr "" -#: src/elflint.c:2707 +#: src/elflint.c:2746 #, c-format msgid "section [%2d] '%s': section group with only one member\n" msgstr "" -#: src/elflint.c:2718 +#: src/elflint.c:2757 #, c-format msgid "section [%2d] '%s': unknown section group flags\n" msgstr "" -#: src/elflint.c:2730 +#: src/elflint.c:2769 #, fuzzy, c-format msgid "section [%2d] '%s': section index %zu out of range\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:2739 +#: src/elflint.c:2778 #, c-format msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" msgstr "" -#: src/elflint.c:2746 +#: src/elflint.c:2785 #, c-format msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" msgstr "" -#: src/elflint.c:2752 +#: src/elflint.c:2791 #, c-format msgid "" "section [%2d] '%s': element %zu references section [%2d] '%s' without " "SHF_GROUP flag set\n" msgstr "" -#: src/elflint.c:2759 +#: src/elflint.c:2798 #, c-format msgid "section [%2d] '%s' is contained in more than one section group\n" msgstr "" -#: src/elflint.c:2956 +#: src/elflint.c:2995 #, 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:2968 +#: src/elflint.c:3007 #, c-format msgid "" "section [%2d] '%s' has different number of entries than symbol table [%2d] " "'%s'\n" msgstr "" -#: src/elflint.c:2984 +#: src/elflint.c:3023 #, c-format msgid "section [%2d] '%s': symbol %d: cannot read version data\n" msgstr "" -#: src/elflint.c:3000 +#: src/elflint.c:3039 #, c-format msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n" msgstr "" -#: src/elflint.c:3008 +#: src/elflint.c:3047 #, c-format msgid "section [%2d] '%s': symbol %d: local symbol with version\n" msgstr "" -#: src/elflint.c:3022 +#: src/elflint.c:3061 #, c-format msgid "section [%2d] '%s': symbol %d: invalid version index %d\n" msgstr "" -#: src/elflint.c:3027 +#: src/elflint.c:3066 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for defined version\n" msgstr "" -#: src/elflint.c:3037 +#: src/elflint.c:3076 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for requested version\n" msgstr "" -#: src/elflint.c:3090 +#: src/elflint.c:3129 #, c-format msgid "more than one version reference section present\n" msgstr "" -#: src/elflint.c:3098 src/elflint.c:3245 +#: src/elflint.c:3137 src/elflint.c:3284 #, c-format msgid "section [%2d] '%s': sh_link does not link to string table\n" msgstr "" -#: src/elflint.c:3123 src/elflint.c:3299 +#: src/elflint.c:3162 src/elflint.c:3338 #, c-format msgid "section [%2d] '%s': entry %d has wrong version %d\n" msgstr "" -#: src/elflint.c:3130 src/elflint.c:3306 +#: src/elflint.c:3169 src/elflint.c:3345 #, c-format msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" msgstr "" -#: src/elflint.c:3140 +#: src/elflint.c:3179 #, c-format msgid "section [%2d] '%s': entry %d has invalid file reference\n" msgstr "" -#: src/elflint.c:3148 +#: src/elflint.c:3187 #, c-format msgid "section [%2d] '%s': entry %d references unknown dependency\n" msgstr "" -#: src/elflint.c:3160 +#: src/elflint.c:3199 #, c-format msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" msgstr "" -#: src/elflint.c:3168 +#: src/elflint.c:3207 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " "reference\n" msgstr "" -#: src/elflint.c:3177 +#: src/elflint.c:3216 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " "%#x, expected %#x\n" msgstr "" -#: src/elflint.c:3186 +#: src/elflint.c:3225 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " "name '%s'\n" msgstr "" -#: src/elflint.c:3197 +#: src/elflint.c:3236 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" msgstr "" -#: src/elflint.c:3214 src/elflint.c:3390 +#: src/elflint.c:3253 src/elflint.c:3429 #, c-format msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n" msgstr "" -#: src/elflint.c:3222 src/elflint.c:3398 +#: src/elflint.c:3261 src/elflint.c:3437 #, 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:3237 +#: src/elflint.c:3276 #, c-format msgid "more than one version definition section present\n" msgstr "" -#: src/elflint.c:3284 +#: src/elflint.c:3323 #, c-format msgid "section [%2d] '%s': more than one BASE definition\n" msgstr "" -#: src/elflint.c:3288 +#: src/elflint.c:3327 #, c-format msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" msgstr "" -#: src/elflint.c:3294 +#: src/elflint.c:3333 #, c-format msgid "section [%2d] '%s': entry %d has unknown flag\n" msgstr "" -#: src/elflint.c:3321 +#: src/elflint.c:3360 #, c-format msgid "section [%2d] '%s': entry %d has invalid name reference\n" msgstr "" -#: src/elflint.c:3328 +#: src/elflint.c:3367 #, c-format msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" msgstr "" -#: src/elflint.c:3336 +#: src/elflint.c:3375 #, c-format msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n" msgstr "" -#: src/elflint.c:3356 +#: src/elflint.c:3395 #, c-format msgid "" "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" msgstr "" -#: src/elflint.c:3373 +#: src/elflint.c:3412 #, c-format msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" msgstr "" -#: src/elflint.c:3406 +#: src/elflint.c:3445 #, c-format msgid "section [%2d] '%s': no BASE definition\n" msgstr "" -#: src/elflint.c:3422 +#: src/elflint.c:3461 #, c-format msgid "section [%2d] '%s': unknown parent version '%s'\n" msgstr "" -#: src/elflint.c:3447 +#: src/elflint.c:3486 #, c-format msgid "section [%2d] '%s': empty object attributes section\n" msgstr "" -#: src/elflint.c:3463 +#: src/elflint.c:3502 #, c-format msgid "section [%2d] '%s': unrecognized attribute format\n" msgstr "" -#: src/elflint.c:3474 +#: src/elflint.c:3513 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute section\n" msgstr "" -#: src/elflint.c:3483 +#: src/elflint.c:3522 #, c-format msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n" msgstr "" -#: src/elflint.c:3495 +#: src/elflint.c:3534 #, c-format msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n" msgstr "" -#: src/elflint.c:3512 +#: src/elflint.c:3551 #, c-format msgid "" "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" msgstr "" -#: src/elflint.c:3521 +#: src/elflint.c:3560 #, c-format msgid "section [%2d] '%s': offset %zu: truncated attribute section\n" msgstr "" -#: src/elflint.c:3530 +#: src/elflint.c:3569 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" msgstr "" -#: src/elflint.c:3545 +#: src/elflint.c:3584 #, c-format msgid "" "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" msgstr "" #. Tag_File -#: src/elflint.c:3556 +#: src/elflint.c:3595 #, c-format msgid "" "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" msgstr "" -#: src/elflint.c:3574 +#: src/elflint.c:3616 #, c-format msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" msgstr "" -#: src/elflint.c:3585 +#: src/elflint.c:3627 #, c-format msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n" msgstr "" -#: src/elflint.c:3598 +#: src/elflint.c:3640 #, c-format msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" msgstr "" -#: src/elflint.c:3602 +#: src/elflint.c:3644 #, c-format msgid "" "section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" msgstr "" -#: src/elflint.c:3612 +#: src/elflint.c:3654 #, c-format msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n" msgstr "" -#: src/elflint.c:3618 +#: src/elflint.c:3660 #, c-format msgid "" "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" msgstr "" -#: src/elflint.c:3715 +#: src/elflint.c:3758 #, c-format msgid "cannot get section header of zeroth section\n" msgstr "" -#: src/elflint.c:3719 +#: src/elflint.c:3762 #, c-format msgid "zeroth section has nonzero name\n" msgstr "" -#: src/elflint.c:3721 +#: src/elflint.c:3764 #, c-format msgid "zeroth section has nonzero type\n" msgstr "" -#: src/elflint.c:3723 +#: src/elflint.c:3766 #, c-format msgid "zeroth section has nonzero flags\n" msgstr "" -#: src/elflint.c:3725 +#: src/elflint.c:3768 #, c-format msgid "zeroth section has nonzero address\n" msgstr "" -#: src/elflint.c:3727 +#: src/elflint.c:3770 #, c-format msgid "zeroth section has nonzero offset\n" msgstr "" -#: src/elflint.c:3729 +#: src/elflint.c:3772 #, c-format msgid "zeroth section has nonzero align value\n" msgstr "" -#: src/elflint.c:3731 +#: src/elflint.c:3774 #, c-format msgid "zeroth section has nonzero entry size value\n" msgstr "" -#: src/elflint.c:3734 +#: src/elflint.c:3777 #, c-format msgid "" "zeroth section has nonzero size value while ELF header has nonzero shnum " "value\n" msgstr "" -#: src/elflint.c:3738 +#: src/elflint.c:3781 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " "overflow in shstrndx\n" msgstr "" -#: src/elflint.c:3742 +#: src/elflint.c:3785 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " "overflow in phnum\n" msgstr "" -#: src/elflint.c:3760 +#: src/elflint.c:3803 #, c-format msgid "cannot get section header for section [%2zu] '%s': %s\n" msgstr "" -#: src/elflint.c:3769 +#: src/elflint.c:3812 #, c-format msgid "section [%2zu]: invalid name\n" msgstr "" -#: src/elflint.c:3796 +#: src/elflint.c:3839 #, c-format msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" msgstr "" -#: src/elflint.c:3813 +#: src/elflint.c:3856 #, c-format msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" msgstr "" -#: src/elflint.c:3831 +#: src/elflint.c:3874 #, c-format msgid "" "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" msgstr "" -#: src/elflint.c:3848 +#: src/elflint.c:3891 #, c-format msgid "section [%2zu] '%s' present in object file\n" msgstr "" -#: src/elflint.c:3854 src/elflint.c:3886 +#: src/elflint.c:3897 src/elflint.c:3929 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" msgstr "" -#: src/elflint.c:3859 src/elflint.c:3891 +#: src/elflint.c:3902 src/elflint.c:3934 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " "segments\n" msgstr "" -#: src/elflint.c:3867 +#: src/elflint.c:3910 #, c-format msgid "" "section [%2zu] '%s' is extension section index table in non-object file\n" msgstr "" -#: src/elflint.c:3910 +#: src/elflint.c:3953 #, c-format msgid "section [%2zu] '%s': size not multiple of entry size\n" msgstr "" -#: src/elflint.c:3915 +#: src/elflint.c:3958 #, c-format msgid "cannot get section header\n" msgstr "" -#: src/elflint.c:3925 +#: src/elflint.c:3968 #, c-format msgid "section [%2zu] '%s' has unsupported type %d\n" msgstr "" -#: src/elflint.c:3945 +#: src/elflint.c:3988 #, c-format msgid "" "section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" msgstr "" -#: src/elflint.c:3955 +#: src/elflint.c:3998 #, c-format msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" msgstr "" -#: src/elflint.c:3963 +#: src/elflint.c:4006 #, c-format msgid "section [%2zu] '%s': thread-local data sections address not zero\n" msgstr "" -#: src/elflint.c:3973 +#: src/elflint.c:4016 #, fuzzy, c-format msgid "section [%2zu] '%s': allocated section cannot be compressed\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:3978 +#: src/elflint.c:4021 #, fuzzy, c-format msgid "section [%2zu] '%s': nobits section cannot be compressed\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/elflint.c:3984 +#: src/elflint.c:4027 #, c-format msgid "" "section [%2zu] '%s': compressed section with no compression header: %s\n" msgstr "" -#: src/elflint.c:3990 +#: src/elflint.c:4033 #, c-format msgid "section [%2zu] '%s': invalid section reference in link value\n" msgstr "" -#: src/elflint.c:3995 +#: src/elflint.c:4038 #, c-format msgid "section [%2zu] '%s': invalid section reference in info value\n" msgstr "" -#: src/elflint.c:4002 +#: src/elflint.c:4045 #, c-format msgid "section [%2zu] '%s': strings flag set without merge flag\n" msgstr "" -#: src/elflint.c:4007 +#: src/elflint.c:4050 #, c-format msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" msgstr "" -#: src/elflint.c:4026 +#: src/elflint.c:4069 #, c-format msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n" msgstr "" -#: src/elflint.c:4035 +#: src/elflint.c:4078 #, c-format msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n" msgstr "" -#: src/elflint.c:4042 +#: src/elflint.c:4085 #, c-format msgid "section [%2zu] '%s' is both executable and writable\n" msgstr "" -#: src/elflint.c:4073 +#: src/elflint.c:4116 #, c-format msgid "" "section [%2zu] '%s' not fully contained in segment of program header entry " "%d\n" msgstr "" -#: src/elflint.c:4083 +#: src/elflint.c:4126 #, 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:4109 +#: src/elflint.c:4152 #, 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:4120 +#: src/elflint.c:4163 #, 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:4131 +#: src/elflint.c:4174 #, c-format msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n" msgstr "" -#: src/elflint.c:4141 +#: src/elflint.c:4184 #, c-format msgid "section [%2zu] '%s' is writable in unwritable segment %d\n" msgstr "" -#: src/elflint.c:4151 +#: src/elflint.c:4194 #, c-format msgid "" "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" msgstr "" -#: src/elflint.c:4157 +#: src/elflint.c:4200 #, 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:4165 +#: src/elflint.c:4208 #, c-format msgid "" "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" msgstr "" -#: src/elflint.c:4216 +#: src/elflint.c:4263 #, c-format msgid "more than one version symbol table present\n" msgstr "" -#: src/elflint.c:4239 +#: src/elflint.c:4286 #, c-format msgid "INTERP program header entry but no .interp section\n" msgstr "" -#: src/elflint.c:4250 +#: src/elflint.c:4297 #, c-format msgid "" "loadable segment [%u] is executable but contains no executable sections\n" msgstr "" -#: src/elflint.c:4256 +#: src/elflint.c:4303 #, c-format msgid "loadable segment [%u] is writable but contains no writable sections\n" msgstr "" -#: src/elflint.c:4267 +#: src/elflint.c:4314 #, c-format msgid "" "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " "exist\n" msgstr "" -#: src/elflint.c:4280 +#: src/elflint.c:4327 #, c-format msgid "duplicate version index %d\n" msgstr "" -#: src/elflint.c:4294 +#: src/elflint.c:4341 #, c-format msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" msgstr "" -#: src/elflint.c:4343 +#: src/elflint.c:4390 #, c-format msgid "phdr[%d]: unknown core file note type % at offset %\n" msgstr "" -#: src/elflint.c:4347 +#: src/elflint.c:4394 #, c-format msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" msgstr "" -#: src/elflint.c:4403 +#: src/elflint.c:4450 #, c-format msgid "" "phdr[%d]: unknown object file note type % with owner name '%s' at " "offset %zu\n" msgstr "" -#: src/elflint.c:4408 +#: src/elflint.c:4455 #, c-format msgid "" "section [%2d] '%s': unknown object file note type % with owner name " "'%s' at offset %zu\n" msgstr "" -#: src/elflint.c:4427 +#: src/elflint.c:4474 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4447 +#: src/elflint.c:4494 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "" -#: src/elflint.c:4450 +#: src/elflint.c:4497 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4471 +#: src/elflint.c:4518 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4478 +#: src/elflint.c:4525 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "" -#: src/elflint.c:4481 +#: src/elflint.c:4528 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4499 +#: src/elflint.c:4546 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" msgstr "" -#: src/elflint.c:4514 +#: src/elflint.c:4561 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "" -#: src/elflint.c:4524 +#: src/elflint.c:4571 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" -#: src/elflint.c:4535 +#: src/elflint.c:4582 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "" -#: src/elflint.c:4543 +#: src/elflint.c:4590 #, c-format msgid "more than one TLS entry in program header\n" msgstr "" -#: src/elflint.c:4550 +#: src/elflint.c:4597 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "" -#: src/elflint.c:4564 +#: src/elflint.c:4611 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4567 +#: src/elflint.c:4614 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4577 +#: src/elflint.c:4624 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "" -#: src/elflint.c:4598 +#: src/elflint.c:4645 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "" -#: src/elflint.c:4609 +#: src/elflint.c:4656 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" -#: src/elflint.c:4616 +#: src/elflint.c:4663 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4625 src/elflint.c:4648 +#: src/elflint.c:4672 src/elflint.c:4695 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "" -#: src/elflint.c:4654 +#: src/elflint.c:4701 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "" -#: src/elflint.c:4681 +#: src/elflint.c:4728 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4684 +#: src/elflint.c:4731 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4697 +#: src/elflint.c:4744 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "" -#: src/elflint.c:4705 +#: src/elflint.c:4752 #, c-format msgid "call frame search table must be allocated\n" msgstr "" -#: src/elflint.c:4708 +#: src/elflint.c:4755 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "" -#: src/elflint.c:4712 +#: src/elflint.c:4759 #, c-format msgid "call frame search table must not be writable\n" msgstr "" -#: src/elflint.c:4715 +#: src/elflint.c:4762 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "" -#: src/elflint.c:4720 +#: src/elflint.c:4767 #, c-format msgid "call frame search table must not be executable\n" msgstr "" -#: src/elflint.c:4723 +#: src/elflint.c:4770 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "" -#: src/elflint.c:4737 +#: src/elflint.c:4784 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "" -#: src/elflint.c:4744 +#: src/elflint.c:4791 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "" -#: src/elflint.c:4747 +#: src/elflint.c:4794 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " "alignment\n" msgstr "" -#: src/elflint.c:4760 +#: src/elflint.c:4807 #, 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:4794 +#: src/elflint.c:4841 #, c-format msgid "cannot read ELF header: %s\n" msgstr "" -#: src/elflint.c:4806 +#: src/elflint.c:4853 #, fuzzy, c-format msgid "cannot create backend for ELF file\n" msgstr "neue Datei konnte nicht angelegt werden" -#: src/elflint.c:4827 +#: src/elflint.c:4874 #, c-format msgid "text relocation flag set but not needed\n" msgstr "" @@ -3687,7 +3694,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: INTERNER FEHLER %d (%s-%s): %s" #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 -#: src/strip.c:2766 +#: src/strip.c:2763 #, c-format msgid "while closing '%s'" msgstr "beim Schliessen von '%s'" @@ -3731,13 +3738,13 @@ msgstr "%s%s%s: Dateiformat nicht erkannt" msgid "cannot create search tree" msgstr "Kann Suchbaum nicht erstellen" -#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663 -#: src/readelf.c:1471 src/readelf.c:1620 src/readelf.c:1847 src/readelf.c:2084 -#: src/readelf.c:2273 src/readelf.c:2451 src/readelf.c:2526 src/readelf.c:2791 -#: src/readelf.c:2866 src/readelf.c:2952 src/readelf.c:3547 src/readelf.c:3595 -#: src/readelf.c:3664 src/readelf.c:11581 src/readelf.c:12771 -#: src/readelf.c:12981 src/readelf.c:13049 src/size.c:396 src/size.c:467 -#: src/strip.c:1093 +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 #, c-format msgid "cannot get section header string table index" msgstr "" @@ -3843,7 +3850,7 @@ msgstr "" msgid "Show information from FILEs (a.out by default)." msgstr "" -#: src/objdump.c:217 src/readelf.c:608 +#: src/objdump.c:217 src/readelf.c:630 msgid "No operation specified.\n" msgstr "Keine Operation angegeben.\n" @@ -3852,11 +3859,11 @@ msgstr "Keine Operation angegeben.\n" msgid "while close `%s'" msgstr "" -#: src/objdump.c:362 src/readelf.c:2179 src/readelf.c:2370 +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 msgid "INVALID SYMBOL" msgstr "" -#: src/objdump.c:377 src/readelf.c:2213 src/readelf.c:2406 +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 msgid "INVALID SECTION" msgstr "" @@ -3911,175 +3918,175 @@ msgstr "'%s' ist kein Archiv" msgid "error while freeing sub-ELF descriptor: %s" msgstr "" -#: src/readelf.c:96 +#: src/readelf.c:97 #, fuzzy msgid "ELF input selection:" msgstr "Eingabeauswahloptionen:" -#: src/readelf.c:98 +#: src/readelf.c:99 msgid "" "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" msgstr "" -#: src/readelf.c:101 +#: src/readelf.c:102 msgid "" "Used with -w to find the skeleton Compile Units in FILE associated with the " "Split Compile units in a .dwo input file" msgstr "" -#: src/readelf.c:103 +#: src/readelf.c:104 #, fuzzy msgid "ELF output selection:" msgstr "Eingabeauswahloptionen:" -#: src/readelf.c:105 +#: src/readelf.c:106 msgid "All these plus -p .strtab -p .dynstr -p .comment" msgstr "" -#: src/readelf.c:106 +#: src/readelf.c:107 msgid "Display the dynamic segment" msgstr "" -#: src/readelf.c:107 +#: src/readelf.c:108 msgid "Display the ELF file header" msgstr "" -#: src/readelf.c:109 +#: src/readelf.c:110 msgid "Display histogram of bucket list lengths" msgstr "" -#: src/readelf.c:110 +#: src/readelf.c:111 msgid "Display the program headers" msgstr "Programm-Köpfe anzeigen" -#: src/readelf.c:112 +#: src/readelf.c:113 msgid "Display relocations" msgstr "Relocations anzeigen" -#: src/readelf.c:113 +#: src/readelf.c:114 #, fuzzy msgid "Display the section groups" msgstr "Programm-Köpfe anzeigen" -#: src/readelf.c:114 +#: src/readelf.c:115 #, fuzzy msgid "Display the sections' headers" msgstr "Programm-Köpfe anzeigen" -#: src/readelf.c:117 +#: src/readelf.c:118 #, fuzzy msgid "Display the symbol table sections" msgstr "Symboltabelle anzeigen" -#: src/readelf.c:120 +#: src/readelf.c:121 #, fuzzy msgid "Display (only) the dynamic symbol table" msgstr "Zeige nur externe Symbole" -#: src/readelf.c:121 +#: src/readelf.c:122 msgid "Display versioning information" msgstr "Versionierungsinformationen anzeigen" -#: src/readelf.c:122 +#: src/readelf.c:123 #, fuzzy msgid "Display the ELF notes" msgstr "Kernnotizen anzeigen" -#: src/readelf.c:124 +#: src/readelf.c:125 #, fuzzy msgid "Display architecture specific information, if any" msgstr "Architekturspezifische Informationen anzeigen (falls vorhanden)" -#: src/readelf.c:126 +#: src/readelf.c:127 msgid "Display sections for exception handling" msgstr "Abschnitte für Ausnahmebehandlung anzeigen" -#: src/readelf.c:128 +#: src/readelf.c:129 msgid "Additional output selection:" msgstr "" -#: src/readelf.c:130 +#: src/readelf.c:131 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 "" -#: src/readelf.c:134 +#: src/readelf.c:135 msgid "Dump the uninterpreted contents of SECTION, by number or name" msgstr "" -#: src/readelf.c:136 +#: src/readelf.c:137 msgid "Print string contents of sections" msgstr "" -#: src/readelf.c:139 +#: src/readelf.c:140 msgid "Display the symbol index of an archive" msgstr "Symbolindex des Archivs anzeigen" -#: src/readelf.c:141 +#: src/readelf.c:142 msgid "Use the dynamic segment when possible for displaying info" msgstr "" -#: src/readelf.c:143 +#: src/readelf.c:144 msgid "Output control:" msgstr "Ausgabekontrolle:" -#: src/readelf.c:145 +#: src/readelf.c:146 msgid "Do not find symbol names for addresses in DWARF data" msgstr "Keine symbolischen Namen für Adressen in DWARF-Daten suchen" -#: src/readelf.c:147 +#: src/readelf.c:148 #, fuzzy msgid "" "Display just offsets instead of resolving values to addresses in DWARF data" msgstr "Keine symbolischen Namen für Adressen in DWARF-Daten suchen" -#: src/readelf.c:149 +#: src/readelf.c:150 msgid "Ignored for compatibility (lines always wide)" msgstr "" -#: src/readelf.c:151 +#: src/readelf.c:152 msgid "" "Show compression information for compressed sections (when used with -S); " "decompress section before dumping data (when used with -p or -x)" msgstr "" #. Short description of program. -#: src/readelf.c:156 +#: src/readelf.c:157 msgid "Print information from ELF file in human-readable form." msgstr "Informationen aus der ELF-Datei in menschenlesbarer Form ausgeben." #. Look up once. -#: src/readelf.c:373 +#: src/readelf.c:395 msgid "yes" msgstr "ja" -#: src/readelf.c:374 +#: src/readelf.c:396 msgid "no" msgstr "nein" -#: src/readelf.c:576 +#: src/readelf.c:598 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "" -#: src/readelf.c:647 src/readelf.c:758 +#: src/readelf.c:669 src/readelf.c:780 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "konnte Elf-Deskriptor nicht erzeugen: %s" -#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188 +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 #, c-format msgid "cannot determine number of sections: %s" msgstr "" -#: src/readelf.c:672 src/readelf.c:1287 src/readelf.c:1495 +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 #, c-format msgid "cannot get section: %s" msgstr "" -#: src/readelf.c:681 src/readelf.c:1294 src/readelf.c:1502 src/readelf.c:13001 +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 @@ -4088,340 +4095,345 @@ msgstr "" msgid "cannot get section header: %s" msgstr "" -#: src/readelf.c:689 +#: src/readelf.c:711 #, fuzzy, c-format msgid "cannot get section name" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:698 src/readelf.c:6797 src/readelf.c:10854 src/readelf.c:10956 -#: src/readelf.c:11134 +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 #, c-format msgid "cannot get %s content: %s" msgstr "" -#: src/readelf.c:714 +#: src/readelf.c:736 #, fuzzy, c-format msgid "cannot create temp file '%s'" msgstr "neue Datei konnte nicht angelegt werden" -#: src/readelf.c:723 +#: src/readelf.c:745 #, fuzzy, c-format msgid "cannot write section data" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775 +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "" -#: src/readelf.c:736 +#: src/readelf.c:758 #, fuzzy, c-format msgid "error while rewinding file descriptor" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/readelf.c:770 +#: src/readelf.c:792 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "" -#: src/readelf.c:874 +#: src/readelf.c:896 #, c-format msgid "cannot stat input file" msgstr "" -#: src/readelf.c:876 +#: src/readelf.c:898 #, c-format msgid "input file is empty" msgstr "" -#: src/readelf.c:878 +#: src/readelf.c:900 #, c-format msgid "failed reading '%s': %s" msgstr "Konnte '%s' nicht lesen: %s" -#: src/readelf.c:907 +#: src/readelf.c:929 #, fuzzy, c-format msgid "No such section '%s' in '%s'" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:966 +#: src/readelf.c:988 #, c-format msgid "cannot read ELF header: %s" msgstr "" -#: src/readelf.c:974 +#: src/readelf.c:996 #, c-format msgid "cannot create EBL handle" msgstr "" -#: src/readelf.c:985 +#: src/readelf.c:1007 #, fuzzy, c-format msgid "cannot determine number of program headers: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:1017 +#: src/readelf.c:1039 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "Konnte %s: %s nicht lesen" -#: src/readelf.c:1078 +#: src/readelf.c:1072 +#, fuzzy +msgid "cannot find section" +msgstr "konnte Abschnittsdaten nicht holen: %s" + +#: src/readelf.c:1109 msgid "NONE (None)" msgstr "" -#: src/readelf.c:1079 +#: src/readelf.c:1110 msgid "REL (Relocatable file)" msgstr "" -#: src/readelf.c:1080 +#: src/readelf.c:1111 msgid "EXEC (Executable file)" msgstr "" -#: src/readelf.c:1081 +#: src/readelf.c:1112 msgid "DYN (Shared object file)" msgstr "" -#: src/readelf.c:1082 +#: src/readelf.c:1113 msgid "CORE (Core file)" msgstr "" -#: src/readelf.c:1087 +#: src/readelf.c:1118 #, c-format msgid "OS Specific: (%x)\n" msgstr "" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1089 +#: src/readelf.c:1120 #, c-format msgid "Processor Specific: (%x)\n" msgstr "" -#: src/readelf.c:1099 +#: src/readelf.c:1130 msgid "" "ELF Header:\n" " Magic: " msgstr "" -#: src/readelf.c:1103 +#: src/readelf.c:1134 #, c-format msgid "" "\n" " Class: %s\n" msgstr "" -#: src/readelf.c:1108 +#: src/readelf.c:1139 #, fuzzy, c-format msgid " Data: %s\n" msgstr " Daten: %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1145 #, c-format msgid " Ident Version: %hhd %s\n" msgstr "" -#: src/readelf.c:1116 src/readelf.c:1138 +#: src/readelf.c:1147 src/readelf.c:1169 msgid "(current)" msgstr "(aktuell)" -#: src/readelf.c:1120 +#: src/readelf.c:1151 #, c-format msgid " OS/ABI: %s\n" msgstr "" -#: src/readelf.c:1123 +#: src/readelf.c:1154 #, c-format msgid " ABI Version: %hhd\n" msgstr "" -#: src/readelf.c:1126 +#: src/readelf.c:1157 msgid " Type: " msgstr " Typ: " -#: src/readelf.c:1131 +#: src/readelf.c:1162 #, c-format msgid " Machine: %s\n" msgstr "" -#: src/readelf.c:1133 +#: src/readelf.c:1164 #, fuzzy, c-format msgid " Machine: : 0x%x\n" msgstr " Daten: %s\n" -#: src/readelf.c:1136 +#: src/readelf.c:1167 #, c-format msgid " Version: %d %s\n" msgstr "" -#: src/readelf.c:1140 +#: src/readelf.c:1171 #, c-format msgid " Entry point address: %#\n" msgstr "" -#: src/readelf.c:1143 +#: src/readelf.c:1174 #, c-format msgid " Start of program headers: % %s\n" msgstr "" -#: src/readelf.c:1144 src/readelf.c:1147 +#: src/readelf.c:1175 src/readelf.c:1178 msgid "(bytes into file)" msgstr "" -#: src/readelf.c:1146 +#: src/readelf.c:1177 #, c-format msgid " Start of section headers: % %s\n" msgstr "" -#: src/readelf.c:1149 +#: src/readelf.c:1180 #, c-format msgid " Flags: %s\n" msgstr "" -#: src/readelf.c:1152 +#: src/readelf.c:1183 #, c-format msgid " Size of this header: % %s\n" msgstr "" -#: src/readelf.c:1153 src/readelf.c:1156 src/readelf.c:1173 +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 msgid "(bytes)" msgstr "(Bytes)" -#: src/readelf.c:1155 +#: src/readelf.c:1186 #, c-format msgid " Size of program header entries: % %s\n" msgstr "" -#: src/readelf.c:1158 +#: src/readelf.c:1189 #, c-format msgid " Number of program headers entries: %" msgstr "" -#: src/readelf.c:1165 +#: src/readelf.c:1196 #, c-format msgid " (% in [0].sh_info)" msgstr "" -#: src/readelf.c:1168 src/readelf.c:1185 src/readelf.c:1199 +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 msgid " ([0] not available)" msgstr "" -#: src/readelf.c:1172 +#: src/readelf.c:1203 #, c-format msgid " Size of section header entries: % %s\n" msgstr "" -#: src/readelf.c:1175 +#: src/readelf.c:1206 #, c-format msgid " Number of section headers entries: %" msgstr "" -#: src/readelf.c:1182 +#: src/readelf.c:1213 #, c-format msgid " (% in [0].sh_size)" msgstr "" #. We managed to get the zeroth section. -#: src/readelf.c:1195 +#: src/readelf.c:1226 #, c-format msgid " (% in [0].sh_link)" msgstr "" -#: src/readelf.c:1203 +#: src/readelf.c:1234 #, c-format msgid "" " Section header string table index: XINDEX%s\n" "\n" msgstr "" -#: src/readelf.c:1207 +#: src/readelf.c:1238 #, c-format msgid "" " Section header string table index: %\n" "\n" msgstr "" -#: src/readelf.c:1253 src/readelf.c:1461 +#: src/readelf.c:1288 src/readelf.c:1496 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:1256 +#: src/readelf.c:1291 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" "\n" msgstr " %s: %\n" -#: src/readelf.c:1264 +#: src/readelf.c:1299 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1267 +#: src/readelf.c:1302 msgid "Section Headers:" msgstr "" -#: src/readelf.c:1270 +#: src/readelf.c:1305 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" msgstr "" -#: src/readelf.c:1272 +#: src/readelf.c:1307 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" msgstr "" -#: src/readelf.c:1277 +#: src/readelf.c:1312 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1279 +#: src/readelf.c:1314 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1357 +#: src/readelf.c:1392 #, c-format msgid "bad compression header for section %zd: %s" msgstr "" -#: src/readelf.c:1368 +#: src/readelf.c:1403 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "" -#: src/readelf.c:1386 +#: src/readelf.c:1421 msgid "Program Headers:" msgstr "Programm-Köpfe:" -#: src/readelf.c:1388 +#: src/readelf.c:1423 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" -#: src/readelf.c:1391 +#: src/readelf.c:1426 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" msgstr "" -#: src/readelf.c:1448 +#: src/readelf.c:1483 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "" -#: src/readelf.c:1473 +#: src/readelf.c:1508 msgid "" "\n" " Section to Segment mapping:\n" " Segment Sections..." msgstr "" -#: src/readelf.c:1484 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 #, c-format msgid "cannot get program header: %s" msgstr "" -#: src/readelf.c:1628 +#: src/readelf.c:1663 #, c-format msgid "" "\n" @@ -4432,7 +4444,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1633 +#: src/readelf.c:1668 #, c-format msgid "" "\n" @@ -4443,31 +4455,32 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1641 +#: src/readelf.c:1676 msgid "" msgstr "" -#: src/readelf.c:1655 +#: src/readelf.c:1690 msgid "" msgstr "" -#: src/readelf.c:1678 src/readelf.c:2461 src/readelf.c:3563 src/readelf.c:12873 -#: src/readelf.c:12880 src/readelf.c:12924 src/readelf.c:12931 +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1682 src/readelf.c:2466 src/readelf.c:3567 +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1851 src/readelf.c:2532 src/readelf.c:2797 src/readelf.c:2872 -#: src/readelf.c:3175 src/readelf.c:3249 src/readelf.c:5570 +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:1854 +#: src/readelf.c:1889 #, c-format msgid "" "\n" @@ -4480,7 +4493,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1867 +#: src/readelf.c:1902 #, c-format msgid "" "\n" @@ -4493,48 +4506,48 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:1877 +#: src/readelf.c:1912 msgid " Type Value\n" msgstr "" -#: src/readelf.c:1886 +#: src/readelf.c:1921 #, fuzzy msgid "cannot get string table by using dynamic segment" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:1925 +#: src/readelf.c:1960 #, c-format msgid "Shared library: [%s]\n" msgstr "" -#: src/readelf.c:1929 +#: src/readelf.c:1964 #, c-format msgid "Library soname: [%s]\n" msgstr "" -#: src/readelf.c:1933 +#: src/readelf.c:1968 #, c-format msgid "Library rpath: [%s]\n" msgstr "" -#: src/readelf.c:1937 +#: src/readelf.c:1972 #, c-format msgid "Library runpath: [%s]\n" msgstr "" -#: src/readelf.c:1956 +#: src/readelf.c:1993 #, c-format msgid "% (bytes)\n" msgstr "" -#: src/readelf.c:2070 src/readelf.c:2259 +#: src/readelf.c:2109 src/readelf.c:2298 #, c-format msgid "" "\n" "Invalid symbol table at offset %#0\n" msgstr "" -#: src/readelf.c:2087 src/readelf.c:2276 +#: src/readelf.c:2126 src/readelf.c:2315 #, c-format msgid "" "\n" @@ -4553,7 +4566,8 @@ 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:2102 src/readelf.c:2291 +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 #, c-format msgid "" "\n" @@ -4564,29 +4578,39 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2112 +#: src/readelf.c:2151 msgid " Offset Type Value Name\n" msgstr "" -#: src/readelf.c:2114 +#: src/readelf.c:2153 msgid " Offset Type Value Name\n" msgstr "" -#: src/readelf.c:2167 src/readelf.c:2178 src/readelf.c:2191 src/readelf.c:2212 -#: src/readelf.c:2224 src/readelf.c:2357 src/readelf.c:2369 src/readelf.c:2383 -#: src/readelf.c:2405 src/readelf.c:2418 +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 msgid "" msgstr "" -#: src/readelf.c:2301 +#: src/readelf.c:2340 msgid " Offset Type Value Addend Name\n" msgstr "" -#: src/readelf.c:2303 +#: src/readelf.c:2342 msgid " Offset Type Value Addend Name\n" msgstr "" -#: src/readelf.c:2540 +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "" + +#: src/readelf.c:2868 #, c-format msgid "" "\n" @@ -4597,40 +4621,34 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2545 +#: src/readelf.c:2873 #, 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:2553 +#: src/readelf.c:2881 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: src/readelf.c:2555 +#: src/readelf.c:2883 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr "" -#: src/readelf.c:2575 -#, c-format -msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -msgstr "" - -#: src/readelf.c:2668 -#, c-format -msgid "bad dynamic symbol" +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." msgstr "" -#: src/readelf.c:2753 +#: src/readelf.c:3102 msgid "none" msgstr "keine" -#: src/readelf.c:2770 +#: src/readelf.c:3119 msgid "| " msgstr "| " -#: src/readelf.c:2800 +#: src/readelf.c:3149 #, c-format msgid "" "\n" @@ -4643,17 +4661,17 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2821 +#: src/readelf.c:3170 #, fuzzy, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Version: %hu Datei: %s Cnt: %hu\n" -#: src/readelf.c:2834 +#: src/readelf.c:3183 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Name: %s Flags: %s Version: %hu\n" -#: src/readelf.c:2876 +#: src/readelf.c:3225 #, c-format msgid "" "\n" @@ -4666,18 +4684,18 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:2904 +#: src/readelf.c:3253 #, c-format msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" msgstr "" -#: src/readelf.c:2919 +#: src/readelf.c:3268 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr "" #. Print the header. -#: src/readelf.c:3179 +#: src/readelf.c:3528 #, c-format msgid "" "\n" @@ -4690,15 +4708,15 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3207 +#: src/readelf.c:3556 msgid " 0 *local* " msgstr " 0 *lokal* " -#: src/readelf.c:3212 +#: src/readelf.c:3561 msgid " 1 *global* " msgstr " 1 *global* " -#: src/readelf.c:3254 +#: src/readelf.c:3603 #, c-format msgid "" "\n" @@ -4713,66 +4731,66 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3276 +#: src/readelf.c:3625 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr "" -#: src/readelf.c:3278 +#: src/readelf.c:3627 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3285 +#: src/readelf.c:3634 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3298 +#: src/readelf.c:3647 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" "\t\t\t unsuccessful lookup: %f\n" msgstr "" -#: src/readelf.c:3316 src/readelf.c:3380 src/readelf.c:3446 +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 #, c-format msgid "cannot get data for section %d: %s" msgstr "" -#: src/readelf.c:3324 +#: src/readelf.c:3673 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3353 +#: src/readelf.c:3702 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3388 +#: src/readelf.c:3737 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3419 +#: src/readelf.c:3768 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3455 +#: src/readelf.c:3804 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:3521 +#: src/readelf.c:3870 #, c-format msgid "" " Symbol Bias: %u\n" " Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" msgstr "" -#: src/readelf.c:3606 +#: src/readelf.c:3955 #, c-format msgid "" "\n" @@ -4783,13 +4801,13 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:3620 +#: src/readelf.c:3969 msgid "" " Library Time Stamp Checksum Version " "Flags" msgstr "" -#: src/readelf.c:3680 +#: src/readelf.c:4029 #, c-format msgid "" "\n" @@ -4797,102 +4815,107 @@ msgid "" "%#0:\n" msgstr "" -#: src/readelf.c:3697 +#: src/readelf.c:4046 msgid " Owner Size\n" msgstr "" -#: src/readelf.c:3721 +#: src/readelf.c:4070 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3760 +#: src/readelf.c:4109 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3765 +#: src/readelf.c:4114 #, c-format msgid " File: %11\n" msgstr " File: %11\n" -#: src/readelf.c:3814 +#: src/readelf.c:4164 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3817 +#: src/readelf.c:4167 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3820 +#: src/readelf.c:4170 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3830 +#: src/readelf.c:4180 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3833 +#: src/readelf.c:4183 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3903 +#: src/readelf.c:4221 +#, fuzzy +msgid "Couldn't get data from section" +msgstr "konnte Versionierungsabschnitt nicht erstellen: %s" + +#: src/readelf.c:4286 #, fuzzy msgid "sprintf failure" msgstr "mprotect fehlgeschlagen" -#: src/readelf.c:4387 +#: src/readelf.c:4770 msgid "empty block" msgstr "" -#: src/readelf.c:4390 +#: src/readelf.c:4773 #, c-format msgid "%zu byte block:" msgstr "" -#: src/readelf.c:4868 +#: src/readelf.c:5251 #, c-format msgid "%*s[%2] %s \n" msgstr "" -#: src/readelf.c:5028 +#: src/readelf.c:5423 #, c-format msgid "%s %# used with different address sizes" msgstr "" -#: src/readelf.c:5035 +#: src/readelf.c:5430 #, c-format msgid "%s %# used with different offset sizes" msgstr "" -#: src/readelf.c:5042 +#: src/readelf.c:5437 #, c-format msgid "%s %# used with different base addresses" msgstr "" -#: src/readelf.c:5049 +#: src/readelf.c:5444 #, c-format msgid "%s %# used with different attribute %s and %s" msgstr "" -#: src/readelf.c:5149 +#: src/readelf.c:5544 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:5157 +#: src/readelf.c:5552 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr "" -#: src/readelf.c:5260 +#: src/readelf.c:5658 #, c-format msgid "" "\n" @@ -4900,79 +4923,74 @@ msgid "" " [ Code]\n" msgstr "" -#: src/readelf.c:5268 +#: src/readelf.c:5666 #, c-format msgid "" "\n" "Abbreviation section at offset %:\n" msgstr "" -#: src/readelf.c:5281 +#: src/readelf.c:5679 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr "" -#: src/readelf.c:5297 +#: src/readelf.c:5695 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr "" -#: src/readelf.c:5330 src/readelf.c:5639 src/readelf.c:5806 src/readelf.c:6191 -#: src/readelf.c:6807 src/readelf.c:8562 src/readelf.c:9308 src/readelf.c:9791 -#: src/readelf.c:10042 src/readelf.c:10208 src/readelf.c:10595 -#: src/readelf.c:10655 +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 #, c-format msgid "" "\n" "DWARF section [%2zu] '%s' at offset %#:\n" msgstr "" -#: src/readelf.c:5343 -#, fuzzy, c-format -msgid "cannot get .debug_addr section data: %s" -msgstr "konnte Abschnittsdaten nicht holen: %s" - -#: src/readelf.c:5443 src/readelf.c:5467 src/readelf.c:5851 src/readelf.c:9353 +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 #, fuzzy, c-format msgid " Length: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5445 src/readelf.c:5482 src/readelf.c:5864 src/readelf.c:9366 +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5446 src/readelf.c:5491 src/readelf.c:5873 src/readelf.c:9375 +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5448 src/readelf.c:5501 src/readelf.c:5883 src/readelf.c:9385 +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5486 src/readelf.c:5868 src/readelf.c:9370 src/readelf.c:10787 +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 #, fuzzy, c-format msgid "Unknown version" msgstr "unbekannte Version" -#: src/readelf.c:5496 src/readelf.c:5709 src/readelf.c:5878 src/readelf.c:9380 +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 #, fuzzy, c-format msgid "unsupported address size" msgstr "Kein Adress-Wert" -#: src/readelf.c:5507 src/readelf.c:5720 src/readelf.c:5888 src/readelf.c:9390 +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5560 src/readelf.c:5634 +#: src/readelf.c:5952 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "" -#: src/readelf.c:5575 +#: src/readelf.c:5967 #, c-format msgid "" "\n" @@ -4983,239 +5001,229 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:5606 +#: src/readelf.c:5998 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5608 +#: src/readelf.c:6000 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" msgstr "" -#: src/readelf.c:5652 src/readelf.c:8589 +#: src/readelf.c:6038 src/readelf.c:8981 #, c-format msgid "" "\n" "Table at offset %zu:\n" msgstr "" -#: src/readelf.c:5656 src/readelf.c:5832 src/readelf.c:6831 src/readelf.c:8600 -#: src/readelf.c:9334 +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "" -#: src/readelf.c:5672 +#: src/readelf.c:6058 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5684 +#: src/readelf.c:6070 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5688 +#: src/readelf.c:6074 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5699 +#: src/readelf.c:6085 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5705 +#: src/readelf.c:6091 #, c-format msgid " Address size: %6\n" msgstr "" -#: src/readelf.c:5716 +#: src/readelf.c:6102 #, c-format msgid "" " Segment size: %6\n" "\n" msgstr "" -#: src/readelf.c:5771 +#: src/readelf.c:6157 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5815 -#, fuzzy, c-format -msgid "cannot get .debug_rnglists content: %s" -msgstr "konnte Programm-Kopf nicht erstellen: %s" - -#: src/readelf.c:5838 src/readelf.c:9340 +#: src/readelf.c:6219 src/readelf.c:9727 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " %s: %\n" -#: src/readelf.c:5893 src/readelf.c:9395 +#: src/readelf.c:6274 src/readelf.c:9782 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5909 src/readelf.c:9411 +#: src/readelf.c:6290 src/readelf.c:9798 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5911 src/readelf.c:9413 +#: src/readelf.c:6292 src/readelf.c:9800 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5917 src/readelf.c:9419 +#: src/readelf.c:6298 src/readelf.c:9806 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5928 src/readelf.c:9430 +#: src/readelf.c:6309 src/readelf.c:9817 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5932 src/readelf.c:9434 +#: src/readelf.c:6313 src/readelf.c:9821 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " %s: %\n" -#: src/readelf.c:5984 +#: src/readelf.c:6365 #, fuzzy, c-format msgid "invalid range list data" msgstr "Ungültige Daten" -#: src/readelf.c:6169 src/readelf.c:9769 +#: src/readelf.c:6550 src/readelf.c:10156 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:6186 -#, c-format -msgid "cannot get .debug_ranges content: %s" -msgstr "" - -#: src/readelf.c:6222 src/readelf.c:9824 +#: src/readelf.c:6598 src/readelf.c:10205 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:6224 src/readelf.c:9826 +#: src/readelf.c:6600 src/readelf.c:10207 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:6233 src/readelf.c:9852 src/readelf.c:9878 +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:6258 src/readelf.c:9962 +#: src/readelf.c:6634 src/readelf.c:10343 #, fuzzy msgid "base address" msgstr "Außerhalb des Adressbereiches" -#: src/readelf.c:6268 src/readelf.c:9972 +#: src/readelf.c:6644 src/readelf.c:10353 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] %s..%s\n" -#: src/readelf.c:6528 +#: src/readelf.c:6908 msgid " \n" msgstr "" -#: src/readelf.c:6785 +#: src/readelf.c:7165 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:6803 +#: src/readelf.c:7189 #, c-format msgid "" "\n" "Call frame information section [%2zu] '%s' at offset %#:\n" msgstr "" -#: src/readelf.c:6853 +#: src/readelf.c:7239 #, c-format msgid "" "\n" " [%6tx] Zero terminator\n" msgstr "" -#: src/readelf.c:6954 src/readelf.c:7108 +#: src/readelf.c:7343 src/readelf.c:7497 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "ungültige Abschnittsausrichtung" -#: src/readelf.c:6969 +#: src/readelf.c:7358 msgid "FDE address encoding: " msgstr "" -#: src/readelf.c:6975 +#: src/readelf.c:7364 msgid "LSDA pointer encoding: " msgstr "" -#: src/readelf.c:7085 +#: src/readelf.c:7474 #, c-format msgid " (offset: %#)" msgstr "" -#: src/readelf.c:7092 +#: src/readelf.c:7481 #, c-format msgid " (end offset: %#)" msgstr "" -#: src/readelf.c:7129 +#: src/readelf.c:7518 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr "" -#: src/readelf.c:7214 +#: src/readelf.c:7603 #, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "" -#: src/readelf.c:7224 +#: src/readelf.c:7613 #, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "" -#: src/readelf.c:7246 +#: src/readelf.c:7635 #, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "" -#: src/readelf.c:7576 +#: src/readelf.c:7965 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "Ungültige Datei" -#: src/readelf.c:7580 +#: src/readelf.c:7969 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr "unbekannte Form %" -#: src/readelf.c:7584 +#: src/readelf.c:7973 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "ELF Kopf konnte nicht ausgelesen werden" -#: src/readelf.c:7899 +#: src/readelf.c:8295 #, c-format msgid "" "\n" @@ -5223,12 +5231,12 @@ msgid "" " [Offset]\n" msgstr "" -#: src/readelf.c:7949 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:7969 +#: src/readelf.c:8365 #, c-format msgid "" " Type unit at offset %:\n" @@ -5237,7 +5245,7 @@ msgid "" " Type signature: %#, Type offset: %# [%]\n" msgstr "" -#: src/readelf.c:7981 +#: src/readelf.c:8377 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5245,37 +5253,37 @@ msgid "" "%, Offset size: %\n" msgstr "" -#: src/readelf.c:7991 src/readelf.c:8152 +#: src/readelf.c:8387 src/readelf.c:8548 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:8018 +#: src/readelf.c:8414 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:8047 +#: src/readelf.c:8443 #, c-format msgid "cannot get DIE offset: %s" msgstr "" -#: src/readelf.c:8056 +#: src/readelf.c:8452 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:8092 +#: src/readelf.c:8488 #, c-format msgid "cannot get next DIE: %s\n" msgstr "" -#: src/readelf.c:8100 +#: src/readelf.c:8496 #, c-format msgid "cannot get next DIE: %s" msgstr "" -#: src/readelf.c:8144 +#: src/readelf.c:8540 #, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5283,7 +5291,7 @@ msgid "" "%, Offset size: %\n" msgstr "" -#: src/readelf.c:8196 +#: src/readelf.c:8592 #, c-format msgid "" "\n" @@ -5291,18 +5299,13 @@ msgid "" "\n" msgstr "" -#: src/readelf.c:8528 +#: src/readelf.c:8924 #, fuzzy, c-format msgid "unknown form: %s" msgstr "unbekannte Form %" -#: src/readelf.c:8576 -#, c-format -msgid "cannot get line data section data: %s" -msgstr "" - #. Print what we got so far. -#: src/readelf.c:8680 +#: src/readelf.c:9072 #, c-format msgid "" "\n" @@ -5321,187 +5324,187 @@ msgid "" "Opcodes:\n" msgstr "" -#: src/readelf.c:8702 +#: src/readelf.c:9094 #, fuzzy, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "ungültige .debug_line Sektion" -#: src/readelf.c:8710 +#: src/readelf.c:9102 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "Kein Adress-Wert" -#: src/readelf.c:8718 +#: src/readelf.c:9110 #, c-format msgid "cannot handle segment selector size: %u\n" msgstr "" -#: src/readelf.c:8728 +#: src/readelf.c:9120 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "" -#: src/readelf.c:8743 +#: src/readelf.c:9135 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:8754 +#: src/readelf.c:9146 msgid "" "\n" "Directory table:" msgstr "" -#: src/readelf.c:8760 src/readelf.c:8837 +#: src/readelf.c:9152 src/readelf.c:9229 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8831 +#: src/readelf.c:9223 msgid "" "\n" "File name table:" msgstr "" -#: src/readelf.c:8892 +#: src/readelf.c:9284 msgid " Entry Dir Time Size Name" msgstr "" -#: src/readelf.c:8938 +#: src/readelf.c:9330 msgid "" "\n" "No line number statements." msgstr "" -#: src/readelf.c:8942 +#: src/readelf.c:9334 msgid "" "\n" "Line number statements:" msgstr "" -#: src/readelf.c:8957 +#: src/readelf.c:9349 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:8991 +#: src/readelf.c:9383 #, c-format msgid " special opcode %u: address+%u = " msgstr "" -#: src/readelf.c:8995 +#: src/readelf.c:9387 #, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr "" -#: src/readelf.c:8998 +#: src/readelf.c:9390 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:9016 +#: src/readelf.c:9408 #, c-format msgid " extended opcode %u: " msgstr "" -#: src/readelf.c:9021 +#: src/readelf.c:9413 msgid " end of sequence" msgstr "" -#: src/readelf.c:9039 +#: src/readelf.c:9431 #, fuzzy, c-format msgid " set address to " msgstr "Außerhalb des Adressbereiches" -#: src/readelf.c:9067 +#: src/readelf.c:9459 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" -#: src/readelf.c:9081 +#: src/readelf.c:9473 #, c-format msgid " set discriminator to %u\n" msgstr "" -#: src/readelf.c:9108 +#: src/readelf.c:9500 #, c-format msgid " set inlined context %u, function name %s (0x%x)\n" msgstr "" -#: src/readelf.c:9132 +#: src/readelf.c:9524 #, c-format msgid " set function name %s (0x%x)\n" msgstr "" #. Unknown, ignore it. -#: src/readelf.c:9139 +#: src/readelf.c:9531 #, fuzzy msgid " unknown opcode" msgstr "unbekannter Typ" #. Takes no argument. -#: src/readelf.c:9151 +#: src/readelf.c:9543 msgid " copy" msgstr "" -#: src/readelf.c:9162 +#: src/readelf.c:9554 #, c-format msgid " advance address by %u to " msgstr "" -#: src/readelf.c:9166 src/readelf.c:9227 +#: src/readelf.c:9558 src/readelf.c:9619 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:9178 +#: src/readelf.c:9570 #, c-format msgid " advance line by constant %d to %\n" msgstr "" -#: src/readelf.c:9188 +#: src/readelf.c:9580 #, c-format msgid " set file to %\n" msgstr "" -#: src/readelf.c:9199 +#: src/readelf.c:9591 #, c-format msgid " set column to %\n" msgstr "" -#: src/readelf.c:9206 +#: src/readelf.c:9598 #, c-format msgid " set '%s' to %\n" msgstr "" #. Takes no argument. -#: src/readelf.c:9212 +#: src/readelf.c:9604 msgid " set basic block flag" msgstr "" -#: src/readelf.c:9223 +#: src/readelf.c:9615 #, c-format msgid " advance address by constant %u to " msgstr "" -#: src/readelf.c:9243 +#: src/readelf.c:9635 #, c-format msgid " advance address by fixed value %u to \n" msgstr "" #. Takes no argument. -#: src/readelf.c:9253 +#: src/readelf.c:9645 msgid " set prologue end flag" msgstr "" #. Takes no argument. -#: src/readelf.c:9258 +#: src/readelf.c:9650 msgid " set epilogue begin flag" msgstr "" -#: src/readelf.c:9268 +#: src/readelf.c:9660 #, c-format msgid " set isa to %u\n" msgstr "" @@ -5509,108 +5512,93 @@ 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:9277 +#: src/readelf.c:9669 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] "" msgstr[1] "" -#: src/readelf.c:9317 -#, fuzzy, c-format -msgid "cannot get .debug_loclists content: %s" -msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s" - -#: src/readelf.c:9483 +#: src/readelf.c:9870 #, c-format msgid " \n" msgstr "" -#: src/readelf.c:9523 +#: src/readelf.c:9910 #, fuzzy, c-format msgid "invalid loclists data" msgstr "Ungültige Daten" -#: src/readelf.c:9786 -#, c-format -msgid "cannot get .debug_loc content: %s" -msgstr "" - -#: src/readelf.c:9999 src/readelf.c:11043 +#: src/readelf.c:10380 src/readelf.c:11425 msgid " \n" msgstr "" -#: src/readelf.c:10054 src/readelf.c:10217 -#, c-format -msgid "cannot get macro information section data: %s" -msgstr "" - -#: src/readelf.c:10134 +#: src/readelf.c:10511 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "" -#: src/readelf.c:10157 +#: src/readelf.c:10534 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "" -#: src/readelf.c:10258 +#: src/readelf.c:10629 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " %s: %\n" -#: src/readelf.c:10270 +#: src/readelf.c:10641 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:10276 src/readelf.c:11163 +#: src/readelf.c:10647 src/readelf.c:11546 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:10283 +#: src/readelf.c:10654 #, fuzzy, c-format msgid " Flag: 0x%" msgstr " %s: %\n" -#: src/readelf.c:10312 +#: src/readelf.c:10683 #, c-format msgid " Offset length: %\n" msgstr "" -#: src/readelf.c:10320 +#: src/readelf.c:10691 #, c-format msgid " .debug_line offset: 0x%\n" msgstr "" -#: src/readelf.c:10345 +#: src/readelf.c:10716 #, c-format msgid " extension opcode table, % items:\n" msgstr "" -#: src/readelf.c:10352 +#: src/readelf.c:10723 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:10364 +#: src/readelf.c:10735 #, c-format msgid " % arguments:" msgstr "" -#: src/readelf.c:10379 +#: src/readelf.c:10750 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10580 +#: src/readelf.c:10951 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" -#: src/readelf.c:10624 +#: src/readelf.c:11006 #, c-format msgid "" "\n" @@ -5619,77 +5607,72 @@ msgid "" msgstr "" #. TRANS: the debugstr| prefix makes the string unique. -#: src/readelf.c:10629 +#: src/readelf.c:11011 msgctxt "debugstr" msgid "Offset" msgstr "" -#: src/readelf.c:10639 +#: src/readelf.c:11021 #, c-format msgid " *** error, missing string terminator\n" msgstr "" -#: src/readelf.c:10668 -#, fuzzy, c-format -msgid "cannot get .debug_str_offsets section data: %s" -msgstr "konnte Abschnittsdaten nicht holen: %s" - -#: src/readelf.c:10767 +#: src/readelf.c:11143 #, fuzzy, c-format msgid " Length: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10769 +#: src/readelf.c:11145 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10783 +#: src/readelf.c:11159 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10792 +#: src/readelf.c:11168 #, fuzzy, c-format msgid " Padding: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10846 +#: src/readelf.c:11222 #, c-format msgid "" "\n" "Call frame search table section [%2zu] '.eh_frame_hdr':\n" msgstr "" -#: src/readelf.c:10948 +#: src/readelf.c:11324 #, c-format msgid "" "\n" "Exception handling table section [%2zu] '.gcc_except_table':\n" msgstr "" -#: src/readelf.c:10971 +#: src/readelf.c:11347 #, c-format msgid " LPStart encoding: %#x " msgstr "" -#: src/readelf.c:10983 +#: src/readelf.c:11359 #, c-format msgid " TType encoding: %#x " msgstr "" -#: src/readelf.c:10998 +#: src/readelf.c:11376 #, c-format msgid " Call site encoding: %#x " msgstr "" -#: src/readelf.c:11011 +#: src/readelf.c:11391 msgid "" "\n" " Call site table:" msgstr "" -#: src/readelf.c:11025 +#: src/readelf.c:11407 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5698,142 +5681,164 @@ msgid "" " Action: %u\n" msgstr "" -#: src/readelf.c:11098 +#: src/readelf.c:11480 #, c-format msgid "invalid TType encoding" msgstr "" -#: src/readelf.c:11125 +#: src/readelf.c:11507 #, c-format msgid "" "\n" "GDB section [%2zu] '%s' at offset %# contains % bytes :\n" msgstr "" -#: src/readelf.c:11154 +#: src/readelf.c:11536 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:11172 +#: src/readelf.c:11555 #, c-format msgid " CU offset: %#\n" msgstr "" -#: src/readelf.c:11179 +#: src/readelf.c:11562 #, c-format msgid " TU offset: %#\n" msgstr "" -#: src/readelf.c:11186 +#: src/readelf.c:11569 #, c-format msgid " address offset: %#\n" msgstr "" -#: src/readelf.c:11193 +#: src/readelf.c:11576 #, c-format msgid " symbol offset: %#\n" msgstr "" -#: src/readelf.c:11200 +#: src/readelf.c:11586 +#, fuzzy, c-format +msgid " shortcut offset: %#\n" +msgstr " %s: %\n" + +#: src/readelf.c:11594 #, c-format msgid " constant offset: %#\n" msgstr "" -#: src/readelf.c:11214 +#: src/readelf.c:11608 #, c-format msgid "" "\n" " CU list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:11239 +#: src/readelf.c:11633 #, c-format msgid "" "\n" " TU list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:11268 +#: src/readelf.c:11662 #, c-format msgid "" "\n" " Address list at offset %# contains %zu entries:\n" msgstr "" -#: src/readelf.c:11300 +#: src/readelf.c:11705 #, c-format msgid "" "\n" " Symbol table at offset %# contains %zu slots:\n" msgstr "" -#: src/readelf.c:11438 +#: src/readelf.c:11790 +#, c-format +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "" + +#: src/readelf.c:11886 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "" -#: src/readelf.c:11804 src/readelf.c:12431 src/readelf.c:12541 -#: src/readelf.c:12598 +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 #, c-format msgid "cannot convert core note data: %s" msgstr "" -#: src/readelf.c:12168 +#: src/readelf.c:12616 #, c-format msgid "" "\n" "%*s... ..." msgstr "" -#: src/readelf.c:12677 +#: src/readelf.c:13118 msgid " Owner Data size Type\n" msgstr "" -#: src/readelf.c:12705 +#: src/readelf.c:13146 #, c-format msgid " %-13.*s %9 %s\n" msgstr "" -#: src/readelf.c:12757 +#: src/readelf.c:13198 #, fuzzy, c-format msgid "cannot get content of note: %s" msgstr "Konnte Inhalt von %s: %s nicht lesen" -#: src/readelf.c:12790 +#: src/readelf.c:13231 #, c-format msgid "" "\n" "Note section [%2zu] '%s' of % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12813 +#: src/readelf.c:13254 #, c-format msgid "" "\n" "Note segment of % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12860 +#: src/readelf.c:13301 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no data to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12887 src/readelf.c:12938 +#: src/readelf.c:13328 src/readelf.c:13379 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12892 +#: src/readelf.c:13333 #, c-format msgid "" "\n" "Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12897 +#: src/readelf.c:13338 #, c-format msgid "" "\n" @@ -5841,21 +5846,21 @@ msgid "" "%#0:\n" msgstr "" -#: src/readelf.c:12911 +#: src/readelf.c:13352 #, fuzzy, c-format msgid "" "\n" "Section [%zu] '%s' has no strings to dump.\n" msgstr "konnte Abschnittsdaten nicht holen: %s" -#: src/readelf.c:12943 +#: src/readelf.c:13384 #, c-format msgid "" "\n" "String section [%zu] '%s' contains % bytes at offset %#0:\n" msgstr "" -#: src/readelf.c:12948 +#: src/readelf.c:13389 #, c-format msgid "" "\n" @@ -5863,45 +5868,45 @@ msgid "" "offset %#0:\n" msgstr "" -#: src/readelf.c:12996 +#: src/readelf.c:13437 #, c-format msgid "" "\n" "section [%lu] does not exist" msgstr "" -#: src/readelf.c:13026 +#: src/readelf.c:13467 #, c-format msgid "" "\n" "section '%s' does not exist" msgstr "" -#: src/readelf.c:13081 +#: src/readelf.c:13522 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "" -#: src/readelf.c:13084 +#: src/readelf.c:13525 #, c-format msgid "" "\n" "Archive '%s' has no symbol index\n" msgstr "" -#: src/readelf.c:13088 +#: src/readelf.c:13529 #, c-format msgid "" "\n" "Index of archive '%s' has %zu entries:\n" msgstr "" -#: src/readelf.c:13106 +#: src/readelf.c:13547 #, fuzzy, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "konnte Programm-Kopf nicht erstellen: %s" -#: src/readelf.c:13111 +#: src/readelf.c:13552 #, c-format msgid "Archive member '%s' contains:\n" msgstr "" @@ -6379,7 +6384,7 @@ msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" msgid "%s: error while getting shdrstrndx: %s" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" -#: src/strip.c:1712 src/strip.c:2553 +#: src/strip.c:1712 src/strip.c:2552 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n" @@ -6413,7 +6418,7 @@ msgstr "" msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2469 src/strip.c:2577 +#: src/strip.c:2469 src/strip.c:2574 #, c-format msgid "while writing '%s': %s" msgstr "" @@ -6433,22 +6438,22 @@ msgstr "" msgid "%s: error while creating ELF header: %s" msgstr "" -#: src/strip.c:2562 +#: src/strip.c:2560 #, c-format msgid "%s: error while reading the file: %s" msgstr "" -#: src/strip.c:2602 src/strip.c:2622 +#: src/strip.c:2599 src/strip.c:2619 #, fuzzy, c-format msgid "while writing '%s'" msgstr "beim Schliessen von '%s'" -#: src/strip.c:2659 src/strip.c:2666 +#: src/strip.c:2656 src/strip.c:2663 #, c-format msgid "error while finishing '%s': %s" msgstr "" -#: src/strip.c:2683 src/strip.c:2759 +#: src/strip.c:2680 src/strip.c:2756 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "" @@ -6894,7 +6899,7 @@ msgid "" "section PATH SECTION-NAME\n" msgstr "" -#: tests/backtrace.c:483 +#: tests/backtrace.c:491 msgid "Run executable" msgstr "" @@ -6906,6 +6911,22 @@ msgstr "" msgid "Show instances of inlined functions" msgstr "" +#, fuzzy, c-format +#~ msgid "cannot get .debug_addr section data: %s" +#~ msgstr "konnte Abschnittsdaten nicht holen: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_rnglists content: %s" +#~ msgstr "konnte Programm-Kopf nicht erstellen: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_loclists content: %s" +#~ msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_str_offsets section data: %s" +#~ msgstr "konnte Abschnittsdaten nicht holen: %s" + #, fuzzy, c-format #~ msgid "cannot allocate memory" #~ msgstr "konnte Verzeichnis nicht erstellen: %s" diff --git a/po/elfutils.pot b/po/elfutils.pot new file mode 100644 index 0000000000000000000000000000000000000000..80fba9ef5c52e60439f6390fca0da5459e306ee9 --- /dev/null +++ b/po/elfutils.pot @@ -0,0 +1,6806 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR The elfutils developers +# This file is distributed under the same license as the elfutils package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: elfutils 0.190\n" +"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: lib/color.c:51 +msgid "" +"colorize the output. WHEN defaults to 'always' or can be 'auto' or 'never'" +msgstr "" + +#: lib/color.c:127 +#, c-format +msgid "" +"%s: invalid argument '%s' for '--color'\n" +"valid arguments are:\n" +" - 'always', 'yes', 'force'\n" +" - 'never', 'no', 'none'\n" +" - 'auto', 'tty', 'if-tty'\n" +msgstr "" + +#: lib/printversion.c:39 +#, 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 "" + +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 +#: src/unstrip.c:311 +#, c-format +msgid "memory exhausted" +msgstr "" + +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 +#: libelf/elf_error.c:59 +msgid "no error" +msgstr "" + +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 +#: libelf/elf_error.c:90 +msgid "out of memory" +msgstr "" + +#: libasm/asm_error.c:66 +msgid "cannot create output file" +msgstr "" + +#: libasm/asm_error.c:67 +msgid "invalid parameter" +msgstr "" + +#: libasm/asm_error.c:68 +msgid "cannot change mode of output file" +msgstr "" + +#: libasm/asm_error.c:69 +msgid "cannot rename output file" +msgstr "" + +#: libasm/asm_error.c:70 +msgid "duplicate symbol" +msgstr "" + +#: libasm/asm_error.c:71 +msgid "invalid section type for operation" +msgstr "" + +#: libasm/asm_error.c:72 +msgid "error during output of data" +msgstr "" + +#: libasm/asm_error.c:73 +msgid "no backend support available" +msgstr "" + +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 +#: libelf/elf_error.c:62 +msgid "unknown error" +msgstr "" + +#: libcpu/i386_lex.l:121 +#, c-format +msgid "invalid character '%c' at line %d; ignored" +msgstr "" + +#: libcpu/i386_lex.l:122 +#, c-format +msgid "invalid character '\\%o' at line %d; ignored" +msgstr "" + +#: libcpu/i386_parse.y:555 +#, c-format +msgid "while reading i386 CPU description: %s at line %d" +msgstr "" + +#: libdw/dwarf_error.c:59 +msgid "invalid access" +msgstr "" + +#: libdw/dwarf_error.c:60 +msgid "no regular file" +msgstr "" + +#: libdw/dwarf_error.c:61 +msgid "I/O error" +msgstr "" + +#: libdw/dwarf_error.c:62 +msgid "invalid ELF file" +msgstr "" + +#: libdw/dwarf_error.c:63 +msgid "no DWARF information" +msgstr "" + +#: libdw/dwarf_error.c:64 +msgid "cannot decompress DWARF" +msgstr "" + +#: libdw/dwarf_error.c:65 +msgid "no ELF file" +msgstr "" + +#: libdw/dwarf_error.c:66 +msgid "cannot get ELF header" +msgstr "" + +#: libdw/dwarf_error.c:68 +msgid "not implemented" +msgstr "" + +#: libdw/dwarf_error.c:69 libelf/elf_error.c:110 libelf/elf_error.c:158 +msgid "invalid command" +msgstr "" + +#: libdw/dwarf_error.c:70 +msgid "invalid version" +msgstr "" + +#: libdw/dwarf_error.c:71 +msgid "invalid file" +msgstr "" + +#: libdw/dwarf_error.c:72 +msgid "no entries found" +msgstr "" + +#: libdw/dwarf_error.c:73 +msgid "invalid DWARF" +msgstr "" + +#: libdw/dwarf_error.c:74 +msgid "no string data" +msgstr "" + +#: libdw/dwarf_error.c:75 +msgid ".debug_str section missing" +msgstr "" + +#: libdw/dwarf_error.c:76 +msgid ".debug_line_str section missing" +msgstr "" + +#: libdw/dwarf_error.c:77 +msgid ".debug_str_offsets section missing" +msgstr "" + +#: libdw/dwarf_error.c:78 +msgid "no address value" +msgstr "" + +#: libdw/dwarf_error.c:79 +msgid "no constant value" +msgstr "" + +#: libdw/dwarf_error.c:80 +msgid "no reference value" +msgstr "" + +#: libdw/dwarf_error.c:81 +msgid "invalid reference value" +msgstr "" + +#: libdw/dwarf_error.c:82 +msgid ".debug_line section missing" +msgstr "" + +#: libdw/dwarf_error.c:83 +msgid "invalid .debug_line section" +msgstr "" + +#: libdw/dwarf_error.c:84 +msgid "debug information too big" +msgstr "" + +#: libdw/dwarf_error.c:85 +msgid "invalid DWARF version" +msgstr "" + +#: libdw/dwarf_error.c:86 +msgid "invalid directory index" +msgstr "" + +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 +msgid "address out of range" +msgstr "" + +#: libdw/dwarf_error.c:88 +msgid ".debug_loc section missing" +msgstr "" + +#: libdw/dwarf_error.c:89 +msgid ".debug_loclists section missing" +msgstr "" + +#: libdw/dwarf_error.c:90 +msgid "not a location list value" +msgstr "" + +#: libdw/dwarf_error.c:91 +msgid "no block data" +msgstr "" + +#: libdw/dwarf_error.c:92 +msgid "invalid line index" +msgstr "" + +#: libdw/dwarf_error.c:93 +msgid "invalid address range index" +msgstr "" + +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 +msgid "no matching address range" +msgstr "" + +#: libdw/dwarf_error.c:95 +msgid "no flag value" +msgstr "" + +#: libdw/dwarf_error.c:96 libelf/elf_error.c:235 +msgid "invalid offset" +msgstr "" + +#: libdw/dwarf_error.c:97 +msgid ".debug_ranges section missing" +msgstr "" + +#: libdw/dwarf_error.c:98 +msgid ".debug_rnglists section missing" +msgstr "" + +#: libdw/dwarf_error.c:99 +msgid "invalid CFI section" +msgstr "" + +#: libdw/dwarf_error.c:100 +msgid "no alternative debug link found" +msgstr "" + +#: libdw/dwarf_error.c:101 +msgid "invalid opcode" +msgstr "" + +#: libdw/dwarf_error.c:102 +msgid "not a CU (unit) DIE" +msgstr "" + +#: libdw/dwarf_error.c:103 +msgid "unknown language code" +msgstr "" + +#: libdw/dwarf_error.c:104 +msgid ".debug_addr section missing" +msgstr "" + +#: libdwfl/argp-std.c:45 src/stack.c:643 src/unstrip.c:2547 +msgid "Input selection options:" +msgstr "" + +#: libdwfl/argp-std.c:46 +msgid "Find addresses in FILE" +msgstr "" + +#: libdwfl/argp-std.c:48 +msgid "Find addresses from signatures found in COREFILE" +msgstr "" + +#: libdwfl/argp-std.c:50 +msgid "Find addresses in files mapped into process PID" +msgstr "" + +#: libdwfl/argp-std.c:52 +msgid "" +"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps " +"format" +msgstr "" + +#: libdwfl/argp-std.c:54 +msgid "Find addresses in the running kernel" +msgstr "" + +#: libdwfl/argp-std.c:56 +msgid "Kernel with all modules" +msgstr "" + +#: libdwfl/argp-std.c:58 src/stack.c:650 +msgid "Search path for separate debuginfo files" +msgstr "" + +#: libdwfl/argp-std.c:159 +msgid "only one of -e, -p, -k, -K, or --core allowed" +msgstr "" + +#: libdwfl/argp-std.c:232 +msgid "cannot load kernel symbols" +msgstr "" + +#. Non-fatal to have no modules since we do have the kernel. +#: libdwfl/argp-std.c:236 +msgid "cannot find kernel modules" +msgstr "" + +#: libdwfl/argp-std.c:253 +msgid "cannot find kernel or modules" +msgstr "" + +#: libdwfl/argp-std.c:292 +#, c-format +msgid "cannot read ELF core file: %s" +msgstr "" + +#: libdwfl/argp-std.c:315 +msgid "Not enough memory" +msgstr "" + +#: libdwfl/argp-std.c:325 +msgid "No modules recognized in core file" +msgstr "" + +#: libdwfl/libdwflP.h:50 +msgid "See errno" +msgstr "" + +#: libdwfl/libdwflP.h:51 +msgid "See elf_errno" +msgstr "" + +#: libdwfl/libdwflP.h:52 +msgid "See dwarf_errno" +msgstr "" + +#: libdwfl/libdwflP.h:53 +msgid "See ebl_errno (XXX missing)" +msgstr "" + +#: libdwfl/libdwflP.h:54 +msgid "gzip decompression failed" +msgstr "" + +#: libdwfl/libdwflP.h:55 +msgid "bzip2 decompression failed" +msgstr "" + +#: libdwfl/libdwflP.h:56 +msgid "LZMA decompression failed" +msgstr "" + +#: libdwfl/libdwflP.h:57 +msgid "zstd decompression failed" +msgstr "" + +#: libdwfl/libdwflP.h:58 +msgid "no support library found for machine" +msgstr "" + +#: libdwfl/libdwflP.h:59 +msgid "Callbacks missing for ET_REL file" +msgstr "" + +#: libdwfl/libdwflP.h:60 +msgid "Unsupported relocation type" +msgstr "" + +#: libdwfl/libdwflP.h:61 +msgid "r_offset is bogus" +msgstr "" + +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 +msgid "offset out of range" +msgstr "" + +#: libdwfl/libdwflP.h:63 +msgid "relocation refers to undefined symbol" +msgstr "" + +#: libdwfl/libdwflP.h:64 +msgid "Callback returned failure" +msgstr "" + +#: libdwfl/libdwflP.h:65 +msgid "No DWARF information found" +msgstr "" + +#: libdwfl/libdwflP.h:66 +msgid "No symbol table found" +msgstr "" + +#: libdwfl/libdwflP.h:67 +msgid "No ELF program headers" +msgstr "" + +#: libdwfl/libdwflP.h:68 +msgid "address range overlaps an existing module" +msgstr "" + +#: libdwfl/libdwflP.h:71 +msgid "image truncated" +msgstr "" + +#: libdwfl/libdwflP.h:72 +msgid "ELF file opened" +msgstr "" + +#: libdwfl/libdwflP.h:73 +msgid "not a valid ELF file" +msgstr "" + +#: libdwfl/libdwflP.h:74 +msgid "cannot handle DWARF type description" +msgstr "" + +#: libdwfl/libdwflP.h:75 +msgid "ELF file does not match build ID" +msgstr "" + +#: libdwfl/libdwflP.h:76 +msgid "corrupt .gnu.prelink_undo section data" +msgstr "" + +#: libdwfl/libdwflP.h:77 +msgid "Internal error due to ebl" +msgstr "" + +#: libdwfl/libdwflP.h:78 +msgid "Missing data in core file" +msgstr "" + +#: libdwfl/libdwflP.h:79 +msgid "Invalid register" +msgstr "" + +#: libdwfl/libdwflP.h:80 +msgid "Unknown register value" +msgstr "" + +#: libdwfl/libdwflP.h:81 +msgid "Error reading process memory" +msgstr "" + +#: libdwfl/libdwflP.h:82 +msgid "Couldn't find architecture of any ELF" +msgstr "" + +#: libdwfl/libdwflP.h:83 +msgid "Error parsing /proc filesystem" +msgstr "" + +#: libdwfl/libdwflP.h:84 +msgid "Invalid DWARF" +msgstr "" + +#: libdwfl/libdwflP.h:85 +msgid "Unsupported DWARF" +msgstr "" + +#: libdwfl/libdwflP.h:86 +msgid "Unable to find more threads" +msgstr "" + +#: libdwfl/libdwflP.h:87 +msgid "Dwfl already has attached state" +msgstr "" + +#: libdwfl/libdwflP.h:88 +msgid "Dwfl has no attached state" +msgstr "" + +#: libdwfl/libdwflP.h:89 +msgid "Unwinding not supported for this architecture" +msgstr "" + +#: libdwfl/libdwflP.h:90 +msgid "Invalid argument" +msgstr "" + +#: libdwfl/libdwflP.h:91 +msgid "Not an ET_CORE ELF file" +msgstr "" + +#: libebl/eblbackendname.c:41 +msgid "No backend" +msgstr "" + +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 +#: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 +#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 +msgid "" +msgstr "" + +#: libebl/ebldynamictagname.c:103 +#, c-format +msgid ": %#" +msgstr "" + +#: libebl/eblobjnote.c:58 +#, c-format +msgid "unknown SDT version %u\n" +msgstr "" + +#: libebl/eblobjnote.c:76 +#, c-format +msgid "invalid SDT probe descriptor\n" +msgstr "" + +#: libebl/eblobjnote.c:126 +#, c-format +msgid " PC: " +msgstr "" + +#: libebl/eblobjnote.c:128 +#, c-format +msgid " Base: " +msgstr "" + +#: libebl/eblobjnote.c:130 +#, c-format +msgid " Semaphore: " +msgstr "" + +#: libebl/eblobjnote.c:132 +#, c-format +msgid " Provider: " +msgstr "" + +#: libebl/eblobjnote.c:134 +#, c-format +msgid " Name: " +msgstr "" + +#: libebl/eblobjnote.c:136 +#, c-format +msgid " Args: " +msgstr "" + +#: libebl/eblobjnote.c:304 +#, c-format +msgid " Build ID: " +msgstr "" + +#. A non-null terminated version string. +#: libebl/eblobjnote.c:315 +#, c-format +msgid " Linker version: %.*s\n" +msgstr "" + +#: libebl/eblobjnote.c:642 +#, c-format +msgid " OS: %s, ABI: " +msgstr "" + +#: libebl/eblosabiname.c:70 +msgid "Stand alone" +msgstr "" + +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 +#, c-format +msgid ": %d" +msgstr "" + +#: libelf/elf_error.c:66 +msgid "unknown version" +msgstr "" + +#: libelf/elf_error.c:70 +msgid "unknown type" +msgstr "" + +#: libelf/elf_error.c:74 +msgid "invalid `Elf' handle" +msgstr "" + +#: libelf/elf_error.c:78 +msgid "invalid size of source operand" +msgstr "" + +#: libelf/elf_error.c:82 +msgid "invalid size of destination operand" +msgstr "" + +#: libelf/elf_error.c:86 src/readelf.c:6758 +#, c-format +msgid "invalid encoding" +msgstr "" + +#: libelf/elf_error.c:94 +msgid "invalid file descriptor" +msgstr "" + +#: libelf/elf_error.c:98 +msgid "invalid ELF file data" +msgstr "" + +#: libelf/elf_error.c:102 +msgid "invalid operation" +msgstr "" + +#: libelf/elf_error.c:106 +msgid "ELF version not set" +msgstr "" + +#: libelf/elf_error.c:118 +msgid "invalid fmag field in archive header" +msgstr "" + +#: libelf/elf_error.c:122 +msgid "invalid archive file" +msgstr "" + +#: libelf/elf_error.c:126 +msgid "descriptor is not for an archive" +msgstr "" + +#: libelf/elf_error.c:130 +msgid "no index available" +msgstr "" + +#: libelf/elf_error.c:134 +msgid "cannot read data from file" +msgstr "" + +#: libelf/elf_error.c:138 +msgid "cannot write data to file" +msgstr "" + +#: libelf/elf_error.c:142 +msgid "invalid binary class" +msgstr "" + +#: libelf/elf_error.c:146 +msgid "invalid section index" +msgstr "" + +#: libelf/elf_error.c:150 +msgid "invalid operand" +msgstr "" + +#: libelf/elf_error.c:154 +msgid "invalid section" +msgstr "" + +#: libelf/elf_error.c:162 +msgid "executable header not created first" +msgstr "" + +#: libelf/elf_error.c:166 +msgid "file descriptor disabled" +msgstr "" + +#: libelf/elf_error.c:170 +msgid "archive/member file descriptor mismatch" +msgstr "" + +#: libelf/elf_error.c:178 +msgid "cannot manipulate null section" +msgstr "" + +#: libelf/elf_error.c:182 +msgid "data/scn mismatch" +msgstr "" + +#: libelf/elf_error.c:186 +msgid "invalid section header" +msgstr "" + +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 +#, c-format +msgid "invalid data" +msgstr "" + +#: libelf/elf_error.c:194 +msgid "unknown data encoding" +msgstr "" + +#: libelf/elf_error.c:198 +msgid "section `sh_size' too small for data" +msgstr "" + +#: libelf/elf_error.c:202 +msgid "invalid section alignment" +msgstr "" + +#: libelf/elf_error.c:206 +msgid "invalid section entry size" +msgstr "" + +#: libelf/elf_error.c:210 +msgid "update() for write on read-only file" +msgstr "" + +#: libelf/elf_error.c:214 +msgid "no such file" +msgstr "" + +#: libelf/elf_error.c:218 +msgid "only relocatable files can contain section groups" +msgstr "" + +#: libelf/elf_error.c:223 +msgid "" +"program header only allowed in executables, shared objects, and core files" +msgstr "" + +#: libelf/elf_error.c:230 +msgid "file has no program header" +msgstr "" + +#: libelf/elf_error.c:240 +msgid "invalid section type" +msgstr "" + +#: libelf/elf_error.c:245 +msgid "invalid section flags" +msgstr "" + +#: libelf/elf_error.c:250 +msgid "section does not contain compressed data" +msgstr "" + +#: libelf/elf_error.c:255 +msgid "section contains compressed data" +msgstr "" + +#: libelf/elf_error.c:260 +msgid "unknown compression type" +msgstr "" + +#: libelf/elf_error.c:265 +msgid "cannot compress data" +msgstr "" + +#: libelf/elf_error.c:270 +msgid "cannot decompress data" +msgstr "" + +#: src/addr2line.c:58 +msgid "Input format options:" +msgstr "" + +#: src/addr2line.c:60 +msgid "Treat addresses as offsets relative to NAME section." +msgstr "" + +#: src/addr2line.c:62 +msgid "Output format options:" +msgstr "" + +#: src/addr2line.c:63 +msgid "Print address before each entry" +msgstr "" + +#: src/addr2line.c:64 +msgid "Show only base names of source files" +msgstr "" + +#: src/addr2line.c:66 +msgid "Show absolute file names using compilation directory (default)" +msgstr "" + +#: src/addr2line.c:67 +msgid "Also show function names" +msgstr "" + +#: src/addr2line.c:68 +msgid "Also show symbol or section names" +msgstr "" + +#: src/addr2line.c:69 +msgid "Also show symbol and the section names" +msgstr "" + +#: src/addr2line.c:70 +msgid "Also show line table flags" +msgstr "" + +#: src/addr2line.c:72 +msgid "" +"Show all source locations that caused inline expansion of subroutines at the " +"address." +msgstr "" + +#: src/addr2line.c:75 +msgid "Show demangled symbols (ARG is always ignored)" +msgstr "" + +#: src/addr2line.c:76 +msgid "Show demangled symbols" +msgstr "" + +#: src/addr2line.c:78 +msgid "Print all information on one line, and indent inlines" +msgstr "" + +#: src/addr2line.c:80 +msgid "Show relative file names without compilation directory" +msgstr "" + +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/strings.c:77 +msgid "Miscellaneous:" +msgstr "" + +#. Short description of program. +#: src/addr2line.c:90 +msgid "" +"Locate source files and line information for ADDRs (in a.out by default)." +msgstr "" + +#. Strings for arguments in help texts. +#: src/addr2line.c:94 +msgid "[ADDR...]" +msgstr "" + +#: src/addr2line.c:530 +msgid "Section syntax requires exactly one module" +msgstr "" + +#: src/addr2line.c:552 +#, c-format +msgid "offset %# lies outside section '%s'" +msgstr "" + +#: src/addr2line.c:662 +#, c-format +msgid "cannot find symbol '%s'" +msgstr "" + +#: src/addr2line.c:667 +#, c-format +msgid "offset %# lies outside contents of '%s'" +msgstr "" + +#: src/ar.c:66 +msgid "Commands:" +msgstr "" + +#: src/ar.c:67 +msgid "Delete files from archive." +msgstr "" + +#: src/ar.c:68 +msgid "Move files in archive." +msgstr "" + +#: src/ar.c:69 +msgid "Print files in archive." +msgstr "" + +#: src/ar.c:70 +msgid "Quick append files to archive." +msgstr "" + +#: src/ar.c:72 +msgid "Replace existing or insert new file into archive." +msgstr "" + +#: src/ar.c:73 +msgid "Display content of archive." +msgstr "" + +#: src/ar.c:74 +msgid "Extract files from archive." +msgstr "" + +#: src/ar.c:76 +msgid "Command Modifiers:" +msgstr "" + +#: src/ar.c:77 +msgid "Preserve original dates." +msgstr "" + +#: src/ar.c:78 +msgid "Use instance [COUNT] of name." +msgstr "" + +#: src/ar.c:80 +msgid "Do not replace existing files with extracted files." +msgstr "" + +#: src/ar.c:81 +msgid "Allow filename to be truncated if necessary." +msgstr "" + +#: src/ar.c:83 +msgid "Provide verbose output." +msgstr "" + +#: src/ar.c:84 +msgid "Force regeneration of symbol table." +msgstr "" + +#: src/ar.c:85 +msgid "Insert file after [MEMBER]." +msgstr "" + +#: src/ar.c:86 +msgid "Insert file before [MEMBER]." +msgstr "" + +#: src/ar.c:87 +msgid "Same as -b." +msgstr "" + +#: src/ar.c:88 +msgid "Suppress message when library has to be created." +msgstr "" + +#: src/ar.c:90 +msgid "Use full path for file matching." +msgstr "" + +#: src/ar.c:91 +msgid "Update only older files in archive." +msgstr "" + +#. Short description of program. +#: src/ar.c:97 +msgid "Create, modify, and extract from archives." +msgstr "" + +#. Strings for arguments in help texts. +#: src/ar.c:100 +msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]" +msgstr "" + +#: src/ar.c:179 +#, c-format +msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options" +msgstr "" + +#: src/ar.c:184 +#, c-format +msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers" +msgstr "" + +#: src/ar.c:200 +#, c-format +msgid "'N' is only meaningful with the 'x' and 'd' options" +msgstr "" + +#: src/ar.c:205 +#, c-format +msgid "COUNT parameter required" +msgstr "" + +#: src/ar.c:217 +#, c-format +msgid "invalid COUNT parameter %s" +msgstr "" + +#: src/ar.c:224 +#, c-format +msgid "'%c' is only meaningful with the 'x' option" +msgstr "" + +#: src/ar.c:230 +#, c-format +msgid "archive name required" +msgstr "" + +#: src/ar.c:243 +#, c-format +msgid "command option required" +msgstr "" + +#: src/ar.c:294 +#, c-format +msgid "More than one operation specified" +msgstr "" + +#: src/ar.c:388 +#, c-format +msgid "cannot open archive '%s'" +msgstr "" + +#: src/ar.c:398 +#, c-format +msgid "cannot open archive '%s': %s" +msgstr "" + +#: src/ar.c:402 +#, c-format +msgid "%s: not an archive file" +msgstr "" + +#: src/ar.c:406 +#, c-format +msgid "cannot stat archive '%s'" +msgstr "" + +#: src/ar.c:418 +#, c-format +msgid "no entry %s in archive\n" +msgstr "" + +#: src/ar.c:471 src/ar.c:925 src/ar.c:1131 +msgid "cannot create hash table" +msgstr "" + +#: src/ar.c:477 src/ar.c:931 src/ar.c:1139 +msgid "cannot insert into hash table" +msgstr "" + +#: src/ar.c:485 src/ranlib.c:147 +#, c-format +msgid "cannot stat '%s'" +msgstr "" + +#: src/ar.c:587 +#, c-format +msgid "cannot read content of %s: %s" +msgstr "" + +#: src/ar.c:630 +#, c-format +msgid "cannot open %.*s" +msgstr "" + +#: src/ar.c:652 +#, c-format +msgid "failed to write %s" +msgstr "" + +#: src/ar.c:664 +#, c-format +msgid "cannot change mode of %s" +msgstr "" + +#: src/ar.c:680 +#, c-format +msgid "cannot change modification time of %s" +msgstr "" + +#: src/ar.c:726 +#, c-format +msgid "cannot rename temporary file to %.*s" +msgstr "" + +#: src/ar.c:762 src/ar.c:1016 src/ar.c:1419 src/ranlib.c:221 +#, c-format +msgid "cannot create new file" +msgstr "" + +#: src/ar.c:1221 +#, c-format +msgid "position member %s not found" +msgstr "" + +#: src/ar.c:1231 +#, c-format +msgid "%s: no entry %s in archive!\n" +msgstr "" + +#: src/ar.c:1260 src/objdump.c:240 +#, c-format +msgid "cannot open %s" +msgstr "" + +#: src/ar.c:1265 +#, c-format +msgid "cannot stat %s" +msgstr "" + +#: src/ar.c:1271 +#, c-format +msgid "%s is no regular file" +msgstr "" + +#: src/ar.c:1284 +#, c-format +msgid "cannot get ELF descriptor for %s: %s\n" +msgstr "" + +#: src/ar.c:1304 +#, c-format +msgid "cannot read %s: %s" +msgstr "" + +#: src/ar.c:1479 +#, c-format +msgid "cannot represent ar_date" +msgstr "" + +#: src/ar.c:1485 +#, c-format +msgid "cannot represent ar_uid" +msgstr "" + +#: src/ar.c:1491 +#, c-format +msgid "cannot represent ar_gid" +msgstr "" + +#: src/ar.c:1497 +#, c-format +msgid "cannot represent ar_mode" +msgstr "" + +#: src/ar.c:1503 +#, c-format +msgid "cannot represent ar_size" +msgstr "" + +#: src/arlib-argp.c:31 +msgid "Use zero for uid, gid, and date in archive members." +msgstr "" + +#: src/arlib-argp.c:33 +msgid "Use actual uid, gid, and date in archive members." +msgstr "" + +#: src/arlib-argp.c:62 +#, c-format +msgid "%s (default)" +msgstr "" + +#. The archive is too big. +#: src/arlib.c:212 +#, c-format +msgid "the archive '%s' is too large" +msgstr "" + +#: src/arlib.c:225 +#, c-format +msgid "cannot read ELF header of %s(%s): %s" +msgstr "" + +#: src/elfclassify.c:91 +msgid "opening" +msgstr "" + +#: src/elfclassify.c:98 +msgid "reading" +msgstr "" + +#: src/elfclassify.c:244 +msgid "ELF header" +msgstr "" + +#: src/elfclassify.c:255 +msgid "program headers" +msgstr "" + +#: src/elfclassify.c:264 +msgid "program header" +msgstr "" + +#: src/elfclassify.c:284 +msgid "section headers" +msgstr "" + +#: src/elfclassify.c:295 +msgid "section header string table index" +msgstr "" + +#: src/elfclassify.c:309 +msgid "could not obtain section header" +msgstr "" + +#: src/elfclassify.c:315 +msgid "could not obtain section name" +msgstr "" + +#: src/elfclassify.c:828 +msgid "writing to standard output" +msgstr "" + +#: src/elfclassify.c:855 +msgid "reading from standard input" +msgstr "" + +#: src/elfclassify.c:876 +msgid "Classification options" +msgstr "" + +#: src/elfclassify.c:878 +msgid "File looks like an ELF object or archive/static library (default)" +msgstr "" + +#: src/elfclassify.c:881 +msgid "File is an regular ELF object (not an archive/static library)" +msgstr "" + +#: src/elfclassify.c:884 +msgid "File is an ELF archive or static library" +msgstr "" + +#: src/elfclassify.c:887 +msgid "File is an ELF core dump file" +msgstr "" + +#: src/elfclassify.c:890 +msgid "" +"File is an ELF file with symbol table or .debug_* sections and can be " +"stripped further" +msgstr "" + +#: src/elfclassify.c:893 +msgid "File is (primarily) an ELF program executable (not primarily a DSO)" +msgstr "" + +#: src/elfclassify.c:896 +msgid "File is an ELF program executable (might also be a DSO)" +msgstr "" + +#: src/elfclassify.c:899 +msgid "" +"File is (primarily) an ELF shared object (DSO) (not primarily an executable)" +msgstr "" + +#: src/elfclassify.c:902 +msgid "File is an ELF shared object (DSO) (might also be an executable)" +msgstr "" + +#: src/elfclassify.c:906 +msgid "File is a linux kernel module" +msgstr "" + +#: src/elfclassify.c:908 +msgid "File is a debug only ELF file (separate .debug, .dwo or dwz multi-file)" +msgstr "" + +#: src/elfclassify.c:911 +msgid "File is a loadable ELF object (program or shared object)" +msgstr "" + +#: src/elfclassify.c:940 +msgid "Input flags" +msgstr "" + +#: src/elfclassify.c:942 +msgid "Only classify regular (not symlink nor special device) files" +msgstr "" + +#: src/elfclassify.c:944 +msgid "" +"Also read file names to process from standard input, separated by newlines" +msgstr "" + +#: src/elfclassify.c:947 +msgid "" +"Also read file names to process from standard input, separated by ASCII NUL " +"bytes" +msgstr "" + +#: src/elfclassify.c:950 +msgid "Do not read files from standard input (default)" +msgstr "" + +#: src/elfclassify.c:952 +msgid "Try to open compressed files or embedded (kernel) ELF images" +msgstr "" + +#: src/elfclassify.c:955 +msgid "Output flags" +msgstr "" + +#: src/elfclassify.c:957 +msgid "Output names of files, separated by newline" +msgstr "" + +#: src/elfclassify.c:959 +msgid "Output names of files, separated by ASCII NUL" +msgstr "" + +#: src/elfclassify.c:961 +msgid "Do not output file names" +msgstr "" + +#: src/elfclassify.c:963 +msgid "If printing file names, print matching files (default)" +msgstr "" + +#: src/elfclassify.c:965 +msgid "If printing file names, print files that do not match" +msgstr "" + +#: src/elfclassify.c:967 +msgid "Additional flags" +msgstr "" + +#: src/elfclassify.c:969 +msgid "Output additional information (can be specified multiple times)" +msgstr "" + +#: src/elfclassify.c:971 +msgid "Suppress some error output (counterpart to --verbose)" +msgstr "" + +#. Strings for arguments in help texts. +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 +msgid "FILE..." +msgstr "" + +#: src/elfclassify.c:980 +msgid "" +"Determine the type of an ELF file.\n" +"\n" +"All of the classification options must apply at the same time to a " +"particular file. Classification options can be negated using a \"--not-\" " +"prefix.\n" +"\n" +"Since modern ELF does not clearly distinguish between programs and dynamic " +"shared objects, you should normally use either --executable or --shared to " +"identify the primary purpose of a file. Only one of the --shared and --" +"executable checks can pass for a file.\n" +"\n" +"If you want to know whether an ELF object might a program or a shared " +"library (but could be both), then use --program or --library. Some ELF files " +"will classify as both a program and a library.\n" +"\n" +"If you just want to know whether an ELF file is loadable (as program or " +"library) use --loadable. Note that files that only contain (separate) debug " +"information (--debug-only) are never --loadable (even though they might " +"contain program headers). Linux kernel modules are also not --loadable (in " +"the normal sense).\n" +"\n" +"Without any of the --print options, the program exits with status 0 if the " +"requested checks pass for all input files, with 1 if a check fails for any " +"file, and 2 if there is an environmental issue (such as a file read error or " +"a memory allocation error).\n" +"\n" +"When printing file names, the program exits with status 0 even if no file " +"names are printed, and exits with status 2 if there is an environmental " +"issue.\n" +"\n" +"On usage error (e.g. a bad option was given), the program exits with a " +"status code larger than 2.\n" +"\n" +"The --quiet or -q option suppresses some error warning output, but doesn't " +"change the exit status." +msgstr "" + +#: src/elfcmp.c:59 +msgid "Control options:" +msgstr "" + +#: src/elfcmp.c:61 +msgid "Output all differences, not just the first" +msgstr "" + +#: src/elfcmp.c:62 +msgid "" +"Control treatment of gaps in loadable segments [ignore|match] (default: " +"ignore)" +msgstr "" + +#: src/elfcmp.c:64 +msgid "Ignore permutation of buckets in SHT_HASH section" +msgstr "" + +#: src/elfcmp.c:66 +msgid "Ignore differences in build ID" +msgstr "" + +#: src/elfcmp.c:67 +msgid "Output nothing; yield exit status only" +msgstr "" + +#. Short description of program. +#: src/elfcmp.c:74 +msgid "Compare relevant parts of two ELF files for equality." +msgstr "" + +#. Strings for arguments in help texts. +#: src/elfcmp.c:78 +msgid "FILE1 FILE2" +msgstr "" + +#: src/elfcmp.c:140 +msgid "Invalid number of parameters.\n" +msgstr "" + +#: src/elfcmp.c:171 src/elfcmp.c:176 +#, c-format +msgid "cannot get ELF header of '%s': %s" +msgstr "" + +#: src/elfcmp.c:202 +#, c-format +msgid "%s %s diff: ELF header" +msgstr "" + +#: src/elfcmp.c:209 src/elfcmp.c:212 +#, c-format +msgid "cannot get section count of '%s': %s" +msgstr "" + +#: src/elfcmp.c:217 +#, c-format +msgid "%s %s diff: section count" +msgstr "" + +#: src/elfcmp.c:224 src/elfcmp.c:227 +#, c-format +msgid "cannot get program header count of '%s': %s" +msgstr "" + +#: src/elfcmp.c:232 +#, c-format +msgid "%s %s diff: program header count" +msgstr "" + +#: src/elfcmp.c:240 src/elfcmp.c:243 +#, c-format +msgid "cannot get hdrstrndx of '%s': %s" +msgstr "" + +#: src/elfcmp.c:248 +#, c-format +msgid "%s %s diff: shdr string index" +msgstr "" + +#: src/elfcmp.c:306 +#, c-format +msgid "%s %s differ: section [%zu], [%zu] name" +msgstr "" + +#: src/elfcmp.c:329 +#, c-format +msgid "%s %s differ: section [%zu] '%s' header" +msgstr "" + +#: src/elfcmp.c:337 src/elfcmp.c:343 +#, c-format +msgid "cannot get content of section %zu in '%s': %s" +msgstr "" + +#: src/elfcmp.c:352 +#, c-format +msgid "symbol table [%zu] in '%s' has zero sh_entsize" +msgstr "" + +#: src/elfcmp.c:364 src/elfcmp.c:370 +#, c-format +msgid "cannot get symbol in '%s': %s" +msgstr "" + +#: src/elfcmp.c:392 +#, c-format +msgid "%s %s differ: symbol table [%zu]" +msgstr "" + +#: src/elfcmp.c:395 +#, c-format +msgid "%s %s differ: symbol table [%zu,%zu]" +msgstr "" + +#: src/elfcmp.c:442 src/elfcmp.c:512 +#, c-format +msgid "%s %s differ: section [%zu] '%s' number of notes" +msgstr "" + +#: src/elfcmp.c:450 +#, c-format +msgid "cannot read note section [%zu] '%s' in '%s': %s" +msgstr "" + +#: src/elfcmp.c:461 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note name" +msgstr "" + +#: src/elfcmp.c:469 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note '%s' type" +msgstr "" + +#: src/elfcmp.c:484 +#, c-format +msgid "%s %s differ: build ID length" +msgstr "" + +#: src/elfcmp.c:492 +#, c-format +msgid "%s %s differ: build ID content" +msgstr "" + +#: src/elfcmp.c:501 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note '%s' content" +msgstr "" + +#: src/elfcmp.c:542 +#, c-format +msgid "%s %s differ: section [%zu] '%s' content" +msgstr "" + +#: src/elfcmp.c:546 +#, c-format +msgid "%s %s differ: section [%zu,%zu] '%s' content" +msgstr "" + +#: src/elfcmp.c:561 +#, c-format +msgid "%s %s differ: unequal amount of important sections" +msgstr "" + +#: src/elfcmp.c:594 src/elfcmp.c:599 +#, c-format +msgid "cannot load data of '%s': %s" +msgstr "" + +#: src/elfcmp.c:618 src/elfcmp.c:624 +#, c-format +msgid "cannot get program header entry %d of '%s': %s" +msgstr "" + +#: src/elfcmp.c:630 +#, c-format +msgid "%s %s differ: program header %d" +msgstr "" + +#: src/elfcmp.c:654 +#, c-format +msgid "%s %s differ: gap" +msgstr "" + +#: src/elfcmp.c:705 +#, c-format +msgid "Invalid value '%s' for --gaps parameter." +msgstr "" + +#: src/elfcmp.c:733 src/findtextrel.c:194 src/nm.c:363 src/ranlib.c:140 +#: src/size.c:271 src/strings.c:184 src/strip.c:1040 src/strip.c:1077 +#: src/unstrip.c:2194 src/unstrip.c:2223 +#, c-format +msgid "cannot open '%s'" +msgstr "" + +#: src/elfcmp.c:737 src/findtextrel.c:213 src/ranlib.c:157 +#, c-format +msgid "cannot create ELF descriptor for '%s': %s" +msgstr "" + +#: src/elfcmp.c:742 +#, c-format +msgid "cannot create EBL descriptor for '%s'" +msgstr "" + +#: src/elfcmp.c:760 src/findtextrel.c:384 +#, c-format +msgid "cannot get section header of section %zu: %s" +msgstr "" + +#: src/elfcmp.c:770 +#, c-format +msgid "cannot get content of section %zu: %s" +msgstr "" + +#: src/elfcmp.c:780 src/elfcmp.c:794 +#, c-format +msgid "cannot get relocation: %s" +msgstr "" + +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 +#, c-format +msgid "-o option specified twice" +msgstr "" + +#: src/elfcompress.c:135 +#, c-format +msgid "-t option specified twice" +msgstr "" + +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "" + +#: src/elfcompress.c:150 +#, c-format +msgid "unknown compression type '%s'" +msgstr "" + +#. We need at least one input file. +#: src/elfcompress.c:162 src/elfcompress.c:1447 +#, c-format +msgid "No input file given" +msgstr "" + +#: src/elfcompress.c:168 src/elfcompress.c:1451 +#, c-format +msgid "Only one input file allowed together with '-o'" +msgstr "" + +#: src/elfcompress.c:1408 +msgid "Place (de)compressed output into FILE" +msgstr "" + +#: src/elfcompress.c:1411 +msgid "" +"What type of compression to apply. TYPE can be 'none' (decompress), " +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" +msgstr "" + +#: src/elfcompress.c:1415 +msgid "" +"SECTION name to (de)compress, SECTION is an extended wildcard pattern " +"(defaults to '.?(z)debug*')" +msgstr "" + +#: src/elfcompress.c:1418 +msgid "Print a message for each section being (de)compressed" +msgstr "" + +#: src/elfcompress.c:1421 +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:1424 src/strip.c:92 +msgid "Relax a few rules to handle slightly broken ELF files" +msgstr "" + +#: src/elfcompress.c:1427 +msgid "Be silent when a section cannot be compressed" +msgstr "" + +#: src/elfcompress.c:1437 +msgid "Compress or decompress sections in an ELF file." +msgstr "" + +#: src/elflint.c:63 +msgid "Be extremely strict, flag level 2 features." +msgstr "" + +#: src/elflint.c:64 +msgid "Do not print anything if successful" +msgstr "" + +#: src/elflint.c:65 +msgid "Binary is a separate debuginfo file" +msgstr "" + +#: src/elflint.c:67 +msgid "" +"Binary has been created with GNU ld and is therefore known to be broken in " +"certain ways" +msgstr "" + +#. Short description of program. +#: src/elflint.c:73 +msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." +msgstr "" + +#: src/elflint.c:154 src/readelf.c:413 +#, c-format +msgid "cannot open input file '%s'" +msgstr "" + +#: src/elflint.c:161 +#, c-format +msgid "cannot generate Elf descriptor for '%s': %s\n" +msgstr "" + +#: src/elflint.c:180 +#, c-format +msgid "error while closing Elf descriptor: %s\n" +msgstr "" + +#: src/elflint.c:184 +msgid "No errors" +msgstr "" + +#: src/elflint.c:219 src/readelf.c:625 +msgid "Missing file name.\n" +msgstr "" + +#: src/elflint.c:284 +#, c-format +msgid " error while freeing sub-ELF descriptor: %s\n" +msgstr "" + +#. We cannot do anything. +#: src/elflint.c:292 +#, c-format +msgid "Not an ELF file - it has the wrong magic bytes at the start\n" +msgstr "" + +#: src/elflint.c:358 +#, c-format +msgid "e_ident[%d] == %d is no known class\n" +msgstr "" + +#: src/elflint.c:363 +#, c-format +msgid "e_ident[%d] == %d is no known data encoding\n" +msgstr "" + +#: src/elflint.c:367 +#, c-format +msgid "unknown ELF header version number e_ident[%d] == %d\n" +msgstr "" + +#: src/elflint.c:375 +#, c-format +msgid "unsupported OS ABI e_ident[%d] == '%s'\n" +msgstr "" + +#: src/elflint.c:381 +#, c-format +msgid "unsupported ABI version e_ident[%d] == %d\n" +msgstr "" + +#: src/elflint.c:386 +#, c-format +msgid "e_ident[%zu] is not zero\n" +msgstr "" + +#: src/elflint.c:391 +#, c-format +msgid "unknown object file type %d\n" +msgstr "" + +#: src/elflint.c:398 +#, c-format +msgid "unknown machine type %d\n" +msgstr "" + +#: src/elflint.c:402 +#, c-format +msgid "unknown object file version\n" +msgstr "" + +#: src/elflint.c:408 +#, c-format +msgid "invalid program header offset\n" +msgstr "" + +#: src/elflint.c:410 +#, c-format +msgid "executables and DSOs cannot have zero program header offset\n" +msgstr "" + +#: src/elflint.c:414 +#, c-format +msgid "invalid number of program header entries\n" +msgstr "" + +#: src/elflint.c:422 +#, c-format +msgid "invalid section header table offset\n" +msgstr "" + +#: src/elflint.c:425 +#, c-format +msgid "section header table must be present\n" +msgstr "" + +#: src/elflint.c:439 +#, c-format +msgid "invalid number of section header table entries\n" +msgstr "" + +#: src/elflint.c:456 +#, c-format +msgid "invalid section header index\n" +msgstr "" + +#: src/elflint.c:474 +#, c-format +msgid "Can only check %u headers, shnum was %u\n" +msgstr "" + +#: src/elflint.c:488 +#, c-format +msgid "invalid number of program header table entries\n" +msgstr "" + +#: src/elflint.c:505 +#, c-format +msgid "Can only check %u headers, phnum was %u\n" +msgstr "" + +#: src/elflint.c:510 +#, c-format +msgid "invalid machine flags: %s\n" +msgstr "" + +#: src/elflint.c:517 src/elflint.c:534 +#, c-format +msgid "invalid ELF header size: %hd\n" +msgstr "" + +#: src/elflint.c:520 src/elflint.c:537 +#, c-format +msgid "invalid program header size: %hd\n" +msgstr "" + +#: src/elflint.c:523 src/elflint.c:540 +#, c-format +msgid "invalid program header position or size\n" +msgstr "" + +#: src/elflint.c:526 src/elflint.c:543 +#, c-format +msgid "invalid section header size: %hd\n" +msgstr "" + +#: src/elflint.c:529 src/elflint.c:546 +#, c-format +msgid "invalid section header position or size\n" +msgstr "" + +#: src/elflint.c:591 +#, c-format +msgid "" +"section [%2d] '%s': section with SHF_GROUP flag set not part of a section " +"group\n" +msgstr "" + +#: src/elflint.c:595 +#, c-format +msgid "" +"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" +msgstr "" + +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 +#, c-format +msgid "section [%2d] '%s': cannot get section data\n" +msgstr "" + +#: src/elflint.c:624 src/elflint.c:1699 +#, 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:647 +#, c-format +msgid "" +"section [%2d] '%s': symbol table cannot have more than one extended index " +"section\n" +msgstr "" + +#: src/elflint.c:659 +#, c-format +msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" +msgstr "" + +#: src/elflint.c:663 +#, c-format +msgid "" +"section [%2u] '%s': number of local entries in 'st_info' larger than table " +"size\n" +msgstr "" + +#: src/elflint.c:672 +#, c-format +msgid "section [%2d] '%s': cannot get symbol %d: %s\n" +msgstr "" + +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 +#, c-format +msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" +msgstr "" + +#: src/elflint.c:695 +#, c-format +msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" +msgstr "" + +#: src/elflint.c:705 +#, c-format +msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" +msgstr "" + +#: src/elflint.c:714 +#, c-format +msgid "section [%2d] '%s': symbol %zu: invalid name value\n" +msgstr "" + +#: src/elflint.c:729 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): too large section index but no extended " +"section index section\n" +msgstr "" + +#: src/elflint.c:735 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " +"in st_shndx (%)\n" +msgstr "" + +#. || sym->st_shndx > SHN_HIRESERVE always false +#: src/elflint.c:747 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" +msgstr "" + +#: src/elflint.c:755 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" +msgstr "" + +#: src/elflint.c:761 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" +msgstr "" + +#: src/elflint.c:766 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" +msgstr "" + +#: src/elflint.c:774 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " +"files\n" +msgstr "" + +#: src/elflint.c:778 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" +msgstr "" + +#: src/elflint.c:782 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" +msgstr "" + +#: src/elflint.c:833 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n" +msgstr "" + +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " +"section [%2d] '%s'\n" +msgstr "" + +#: src/elflint.c:848 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " +"have SHF_TLS flag set\n" +msgstr "" + +#: src/elflint.c:858 src/elflint.c:906 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " +"section [%2d] '%s'\n" +msgstr "" + +#: src/elflint.c:885 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " +"entry\n" +msgstr "" + +#: src/elflint.c:891 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " +"header entry\n" +msgstr "" + +#: src/elflint.c:899 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " +"[%2d] '%s'\n" +msgstr "" + +#: src/elflint.c:926 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " +"sh_info\n" +msgstr "" + +#: src/elflint.c:933 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " +"described in sh_info\n" +msgstr "" + +#: src/elflint.c:940 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" +msgstr "" + +#: src/elflint.c:990 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " +"[%2d]\n" +msgstr "" + +#: src/elflint.c:997 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " +"'%s'\n" +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:1013 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " +"match %s section address %#\n" +msgstr "" + +#: src/elflint.c:1020 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " +"match %s section size %\n" +msgstr "" + +#: src/elflint.c:1028 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " +"section\n" +msgstr "" + +#: src/elflint.c:1044 +#, c-format +msgid "" +"section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " +"segment address %#\n" +msgstr "" + +#: src/elflint.c:1051 +#, c-format +msgid "" +"section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " +"segment size %\n" +msgstr "" + +#: src/elflint.c:1064 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" +"default visibility\n" +msgstr "" + +#: src/elflint.c:1068 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n" +msgstr "" + +#: src/elflint.c:1106 +#, c-format +msgid "section [%2d] '%s': cannot get section data.\n" +msgstr "" + +#: src/elflint.c:1122 +#, c-format +msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" +msgstr "" + +#: src/elflint.c:1133 src/elflint.c:1186 +#, c-format +msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" +msgstr "" + +#: src/elflint.c:1158 src/elflint.c:1211 +#, c-format +msgid "" +"section [%2d] '%s': relative relocations after index %d as specified by " +"DT_RELCOUNT\n" +msgstr "" + +#: src/elflint.c:1164 src/elflint.c:1217 +#, c-format +msgid "" +"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " +"specified %d relative relocations\n" +msgstr "" + +#: src/elflint.c:1176 +#, c-format +msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" +msgstr "" + +#: src/elflint.c:1259 +#, c-format +msgid "section [%2d] '%s': invalid destination section index\n" +msgstr "" + +#: src/elflint.c:1271 +#, c-format +msgid "section [%2d] '%s': invalid destination section type\n" +msgstr "" + +#: src/elflint.c:1279 +#, c-format +msgid "section [%2d] '%s': sh_info should be zero\n" +msgstr "" + +#: src/elflint.c:1287 +#, c-format +msgid "" +"section [%2d] '%s': no relocations for merge-able string sections possible\n" +msgstr "" + +#: src/elflint.c:1365 +#, c-format +msgid "text relocation flag set but there is no read-only segment\n" +msgstr "" + +#: src/elflint.c:1392 +#, c-format +msgid "section [%2d] '%s': relocation %zu: invalid type\n" +msgstr "" + +#: src/elflint.c:1400 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: relocation type invalid for the file " +"type\n" +msgstr "" + +#: src/elflint.c:1408 +#, c-format +msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" +msgstr "" + +#: src/elflint.c:1426 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " +"be used with %s\n" +msgstr "" + +#: src/elflint.c:1443 +#, c-format +msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" +msgstr "" + +#: src/elflint.c:1458 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: copy relocation against symbol of type " +"%s\n" +msgstr "" + +#: src/elflint.c:1479 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: read-only section modified but text " +"relocation flag not set\n" +msgstr "" + +#: src/elflint.c:1494 +#, c-format +msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n" +msgstr "" + +#: src/elflint.c:1534 src/elflint.c:1585 +#, c-format +msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" +msgstr "" + +#: src/elflint.c:1687 +#, c-format +msgid "more than one dynamic section present\n" +msgstr "" + +#: src/elflint.c:1705 +#, c-format +msgid "" +"section [%2d]: referenced as string table for section [%2d] '%s' but section " +"link value is invalid\n" +msgstr "" + +#: src/elflint.c:1713 +#, c-format +msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" +msgstr "" + +#: src/elflint.c:1718 src/elflint.c:2008 +#, c-format +msgid "section [%2d] '%s': sh_info not zero\n" +msgstr "" + +#: src/elflint.c:1728 +#, c-format +msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" +msgstr "" + +#: src/elflint.c:1736 +#, c-format +msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" +msgstr "" + +#: src/elflint.c:1743 +#, c-format +msgid "section [%2d] '%s': entry %zu: unknown tag\n" +msgstr "" + +#: src/elflint.c:1754 +#, c-format +msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" +msgstr "" + +#: src/elflint.c:1764 +#, c-format +msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" +msgstr "" + +#: src/elflint.c:1782 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" +msgstr "" + +#: src/elflint.c:1795 +#, 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:1839 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" +msgstr "" + +#: src/elflint.c:1854 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: %s value must be valid offset in section " +"[%2d] '%s'\n" +msgstr "" + +#: src/elflint.c:1874 src/elflint.c:1902 +#, c-format +msgid "section [%2d] '%s': contains %s entry but not %s\n" +msgstr "" + +#: src/elflint.c:1886 +#, c-format +msgid "section [%2d] '%s': mandatory tag %s not present\n" +msgstr "" + +#: src/elflint.c:1895 +#, c-format +msgid "section [%2d] '%s': no hash section present\n" +msgstr "" + +#: src/elflint.c:1910 src/elflint.c:1917 +#, c-format +msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n" +msgstr "" + +#: src/elflint.c:1927 src/elflint.c:1931 +#, c-format +msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" +msgstr "" + +#: src/elflint.c:1937 +#, c-format +msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" +msgstr "" + +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 +#, c-format +msgid "section [%2d] '%s': %s tag missing in prelinked executable\n" +msgstr "" + +#: src/elflint.c:1972 +#, c-format +msgid "" +"section [%2d] '%s': only relocatable files can have extended section index\n" +msgstr "" + +#: src/elflint.c:1982 +#, c-format +msgid "" +"section [%2d] '%s': extended section index section not for symbol table\n" +msgstr "" + +#: src/elflint.c:1986 +#, c-format +msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" +msgstr "" + +#: src/elflint.c:1991 +#, c-format +msgid "cannot get data for symbol section\n" +msgstr "" + +#: src/elflint.c:1994 +#, c-format +msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" +msgstr "" + +#: src/elflint.c:2003 +#, c-format +msgid "section [%2d] '%s': extended index table too small for symbol table\n" +msgstr "" + +#: src/elflint.c:2018 +#, c-format +msgid "" +"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " +"same symbol table\n" +msgstr "" + +#: src/elflint.c:2036 +#, c-format +msgid "symbol 0 should have zero extended section index\n" +msgstr "" + +#: src/elflint.c:2048 +#, c-format +msgid "cannot get data for symbol %zu\n" +msgstr "" + +#: src/elflint.c:2053 +#, c-format +msgid "extended section index is % but symbol index is not XINDEX\n" +msgstr "" + +#: src/elflint.c:2070 src/elflint.c:2127 +#, c-format +msgid "" +"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" +msgstr "" + +#: src/elflint.c:2084 src/elflint.c:2141 +#, c-format +msgid "section [%2d] '%s': chain array too large\n" +msgstr "" + +#: src/elflint.c:2098 src/elflint.c:2155 +#, c-format +msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" +msgstr "" + +#: src/elflint.c:2108 +#, c-format +msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" +msgstr "" + +#: src/elflint.c:2165 +#, c-format +msgid "section [%2d] '%s': hash chain reference % out of bounds\n" +msgstr "" + +#: src/elflint.c:2178 +#, c-format +msgid "section [%2d] '%s': not enough data\n" +msgstr "" + +#: src/elflint.c:2190 +#, c-format +msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n" +msgstr "" + +#: src/elflint.c:2206 +#, c-format +msgid "" +"section [%2d] '%s': hash table section is too small (is %ld, expected at " +"least %ld)\n" +msgstr "" + +#: src/elflint.c:2215 +#, c-format +msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n" +msgstr "" + +#: src/elflint.c:2249 +#, c-format +msgid "" +"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" +msgstr "" + +#: src/elflint.c:2270 +#, c-format +msgid "" +"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " +"undefined\n" +msgstr "" + +#: src/elflint.c:2283 +#, c-format +msgid "" +"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" +msgstr "" + +#: src/elflint.c:2292 +#, c-format +msgid "" +"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" +msgstr "" + +#: src/elflint.c:2322 +#, c-format +msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" +msgstr "" + +#: src/elflint.c:2327 +#, c-format +msgid "" +"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" +msgstr "" + +#: src/elflint.c:2333 +#, c-format +msgid "section [%2d] '%s': bitmask does not match names in the hash table\n" +msgstr "" + +#: src/elflint.c:2346 +#, c-format +msgid "section [%2d] '%s': relocatable files cannot have hash tables\n" +msgstr "" + +#: src/elflint.c:2364 +#, c-format +msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" +msgstr "" + +#: src/elflint.c:2368 +#, c-format +msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" +msgstr "" + +#: src/elflint.c:2378 +#, c-format +msgid "section [%2d] '%s': hash table entry size incorrect\n" +msgstr "" + +#: src/elflint.c:2383 +#, c-format +msgid "section [%2d] '%s': not marked to be allocated\n" +msgstr "" + +#: src/elflint.c:2388 +#, c-format +msgid "" +"section [%2d] '%s': hash table has not even room for initial administrative " +"entries\n" +msgstr "" + +#: src/elflint.c:2437 +#, c-format +msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n" +msgstr "" + +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 +#, c-format +msgid "hash section [%2zu] '%s' does not contain enough data\n" +msgstr "" + +#: src/elflint.c:2482 +#, c-format +msgid "hash section [%2zu] '%s' has zero bit mask words\n" +msgstr "" + +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 +#, c-format +msgid "hash section [%2zu] '%s' uses too much data\n" +msgstr "" + +#: src/elflint.c:2508 +#, c-format +msgid "" +"hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " +"%, nentries: %\n" +msgstr "" + +#: src/elflint.c:2595 +#, c-format +msgid "hash section [%2zu] '%s' invalid sh_entsize\n" +msgstr "" + +#: src/elflint.c:2605 src/elflint.c:2609 +#, c-format +msgid "section [%2zu] '%s': reference to symbol index 0\n" +msgstr "" + +#: src/elflint.c:2616 +#, 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:2628 +#, 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:2644 +#, c-format +msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" +msgstr "" + +#: src/elflint.c:2664 +#, c-format +msgid "" +"section [%2d] '%s': section groups only allowed in relocatable object files\n" +msgstr "" + +#: src/elflint.c:2675 +#, c-format +msgid "section [%2d] '%s': cannot get symbol table: %s\n" +msgstr "" + +#: src/elflint.c:2680 +#, c-format +msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n" +msgstr "" + +#: src/elflint.c:2686 +#, c-format +msgid "section [%2d] '%s': invalid symbol index in sh_info\n" +msgstr "" + +#: src/elflint.c:2691 +#, c-format +msgid "section [%2d] '%s': sh_flags not zero\n" +msgstr "" + +#: src/elflint.c:2698 +#, c-format +msgid "section [%2d] '%s': cannot get symbol for signature\n" +msgstr "" + +#: src/elflint.c:2702 +#, c-format +msgid "section [%2d] '%s': cannot get symbol name for signature\n" +msgstr "" + +#: src/elflint.c:2707 +#, c-format +msgid "section [%2d] '%s': signature symbol cannot be empty string\n" +msgstr "" + +#: src/elflint.c:2713 +#, c-format +msgid "section [%2d] '%s': sh_flags not set correctly\n" +msgstr "" + +#: src/elflint.c:2719 +#, c-format +msgid "section [%2d] '%s': cannot get data: %s\n" +msgstr "" + +#: src/elflint.c:2728 +#, c-format +msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" +msgstr "" + +#: src/elflint.c:2734 +#, c-format +msgid "section [%2d] '%s': section group without flags word\n" +msgstr "" + +#: src/elflint.c:2742 +#, c-format +msgid "section [%2d] '%s': section group without member\n" +msgstr "" + +#: src/elflint.c:2746 +#, c-format +msgid "section [%2d] '%s': section group with only one member\n" +msgstr "" + +#: src/elflint.c:2757 +#, c-format +msgid "section [%2d] '%s': unknown section group flags\n" +msgstr "" + +#: src/elflint.c:2769 +#, c-format +msgid "section [%2d] '%s': section index %zu out of range\n" +msgstr "" + +#: src/elflint.c:2778 +#, c-format +msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" +msgstr "" + +#: src/elflint.c:2785 +#, c-format +msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" +msgstr "" + +#: src/elflint.c:2791 +#, c-format +msgid "" +"section [%2d] '%s': element %zu references section [%2d] '%s' without " +"SHF_GROUP flag set\n" +msgstr "" + +#: src/elflint.c:2798 +#, c-format +msgid "section [%2d] '%s' is contained in more than one section group\n" +msgstr "" + +#: src/elflint.c:2995 +#, 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:3007 +#, c-format +msgid "" +"section [%2d] '%s' has different number of entries than symbol table [%2d] " +"'%s'\n" +msgstr "" + +#: src/elflint.c:3023 +#, c-format +msgid "section [%2d] '%s': symbol %d: cannot read version data\n" +msgstr "" + +#: src/elflint.c:3039 +#, c-format +msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n" +msgstr "" + +#: src/elflint.c:3047 +#, c-format +msgid "section [%2d] '%s': symbol %d: local symbol with version\n" +msgstr "" + +#: src/elflint.c:3061 +#, c-format +msgid "section [%2d] '%s': symbol %d: invalid version index %d\n" +msgstr "" + +#: src/elflint.c:3066 +#, c-format +msgid "" +"section [%2d] '%s': symbol %d: version index %d is for defined version\n" +msgstr "" + +#: src/elflint.c:3076 +#, c-format +msgid "" +"section [%2d] '%s': symbol %d: version index %d is for requested version\n" +msgstr "" + +#: src/elflint.c:3129 +#, c-format +msgid "more than one version reference section present\n" +msgstr "" + +#: src/elflint.c:3137 src/elflint.c:3284 +#, c-format +msgid "section [%2d] '%s': sh_link does not link to string table\n" +msgstr "" + +#: src/elflint.c:3162 src/elflint.c:3338 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong version %d\n" +msgstr "" + +#: src/elflint.c:3169 src/elflint.c:3345 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" +msgstr "" + +#: src/elflint.c:3179 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid file reference\n" +msgstr "" + +#: src/elflint.c:3187 +#, c-format +msgid "section [%2d] '%s': entry %d references unknown dependency\n" +msgstr "" + +#: src/elflint.c:3199 +#, c-format +msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" +msgstr "" + +#: src/elflint.c:3207 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " +"reference\n" +msgstr "" + +#: src/elflint.c:3216 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " +"%#x, expected %#x\n" +msgstr "" + +#: src/elflint.c:3225 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " +"name '%s'\n" +msgstr "" + +#: src/elflint.c:3236 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" +msgstr "" + +#: src/elflint.c:3253 src/elflint.c:3429 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n" +msgstr "" + +#: src/elflint.c:3261 src/elflint.c:3437 +#, 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:3276 +#, c-format +msgid "more than one version definition section present\n" +msgstr "" + +#: src/elflint.c:3323 +#, c-format +msgid "section [%2d] '%s': more than one BASE definition\n" +msgstr "" + +#: src/elflint.c:3327 +#, c-format +msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" +msgstr "" + +#: src/elflint.c:3333 +#, c-format +msgid "section [%2d] '%s': entry %d has unknown flag\n" +msgstr "" + +#: src/elflint.c:3360 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid name reference\n" +msgstr "" + +#: src/elflint.c:3367 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" +msgstr "" + +#: src/elflint.c:3375 +#, c-format +msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n" +msgstr "" + +#: src/elflint.c:3395 +#, c-format +msgid "" +"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" +msgstr "" + +#: src/elflint.c:3412 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" +msgstr "" + +#: src/elflint.c:3445 +#, c-format +msgid "section [%2d] '%s': no BASE definition\n" +msgstr "" + +#: src/elflint.c:3461 +#, c-format +msgid "section [%2d] '%s': unknown parent version '%s'\n" +msgstr "" + +#: src/elflint.c:3486 +#, c-format +msgid "section [%2d] '%s': empty object attributes section\n" +msgstr "" + +#: src/elflint.c:3502 +#, c-format +msgid "section [%2d] '%s': unrecognized attribute format\n" +msgstr "" + +#: src/elflint.c:3513 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: zero length field in attribute section\n" +msgstr "" + +#: src/elflint.c:3522 +#, c-format +msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n" +msgstr "" + +#: src/elflint.c:3534 +#, c-format +msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n" +msgstr "" + +#: src/elflint.c:3551 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" +msgstr "" + +#: src/elflint.c:3560 +#, c-format +msgid "section [%2d] '%s': offset %zu: truncated attribute section\n" +msgstr "" + +#: src/elflint.c:3569 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" +msgstr "" + +#: src/elflint.c:3584 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" +msgstr "" + +#. Tag_File +#: src/elflint.c:3595 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" +msgstr "" + +#: src/elflint.c:3616 +#, c-format +msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" +msgstr "" + +#: src/elflint.c:3627 +#, c-format +msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n" +msgstr "" + +#: src/elflint.c:3640 +#, c-format +msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" +msgstr "" + +#: src/elflint.c:3644 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" +msgstr "" + +#: src/elflint.c:3654 +#, c-format +msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n" +msgstr "" + +#: src/elflint.c:3660 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" +msgstr "" + +#: src/elflint.c:3758 +#, c-format +msgid "cannot get section header of zeroth section\n" +msgstr "" + +#: src/elflint.c:3762 +#, c-format +msgid "zeroth section has nonzero name\n" +msgstr "" + +#: src/elflint.c:3764 +#, c-format +msgid "zeroth section has nonzero type\n" +msgstr "" + +#: src/elflint.c:3766 +#, c-format +msgid "zeroth section has nonzero flags\n" +msgstr "" + +#: src/elflint.c:3768 +#, c-format +msgid "zeroth section has nonzero address\n" +msgstr "" + +#: src/elflint.c:3770 +#, c-format +msgid "zeroth section has nonzero offset\n" +msgstr "" + +#: src/elflint.c:3772 +#, c-format +msgid "zeroth section has nonzero align value\n" +msgstr "" + +#: src/elflint.c:3774 +#, c-format +msgid "zeroth section has nonzero entry size value\n" +msgstr "" + +#: src/elflint.c:3777 +#, c-format +msgid "" +"zeroth section has nonzero size value while ELF header has nonzero shnum " +"value\n" +msgstr "" + +#: src/elflint.c:3781 +#, c-format +msgid "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in shstrndx\n" +msgstr "" + +#: src/elflint.c:3785 +#, c-format +msgid "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in phnum\n" +msgstr "" + +#: src/elflint.c:3803 +#, c-format +msgid "cannot get section header for section [%2zu] '%s': %s\n" +msgstr "" + +#: src/elflint.c:3812 +#, c-format +msgid "section [%2zu]: invalid name\n" +msgstr "" + +#: src/elflint.c:3839 +#, c-format +msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" +msgstr "" + +#: src/elflint.c:3856 +#, c-format +msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" +msgstr "" + +#: src/elflint.c:3874 +#, c-format +msgid "" +"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" +msgstr "" + +#: src/elflint.c:3891 +#, c-format +msgid "section [%2zu] '%s' present in object file\n" +msgstr "" + +#: src/elflint.c:3897 src/elflint.c:3929 +#, c-format +msgid "" +"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" +msgstr "" + +#: src/elflint.c:3902 src/elflint.c:3934 +#, c-format +msgid "" +"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " +"segments\n" +msgstr "" + +#: src/elflint.c:3910 +#, c-format +msgid "" +"section [%2zu] '%s' is extension section index table in non-object file\n" +msgstr "" + +#: src/elflint.c:3953 +#, c-format +msgid "section [%2zu] '%s': size not multiple of entry size\n" +msgstr "" + +#: src/elflint.c:3958 +#, c-format +msgid "cannot get section header\n" +msgstr "" + +#: src/elflint.c:3968 +#, c-format +msgid "section [%2zu] '%s' has unsupported type %d\n" +msgstr "" + +#: src/elflint.c:3988 +#, c-format +msgid "" +"section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" +msgstr "" + +#: src/elflint.c:3998 +#, c-format +msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" +msgstr "" + +#: src/elflint.c:4006 +#, c-format +msgid "section [%2zu] '%s': thread-local data sections address not zero\n" +msgstr "" + +#: src/elflint.c:4016 +#, c-format +msgid "section [%2zu] '%s': allocated section cannot be compressed\n" +msgstr "" + +#: src/elflint.c:4021 +#, c-format +msgid "section [%2zu] '%s': nobits section cannot be compressed\n" +msgstr "" + +#: src/elflint.c:4027 +#, c-format +msgid "" +"section [%2zu] '%s': compressed section with no compression header: %s\n" +msgstr "" + +#: src/elflint.c:4033 +#, c-format +msgid "section [%2zu] '%s': invalid section reference in link value\n" +msgstr "" + +#: src/elflint.c:4038 +#, c-format +msgid "section [%2zu] '%s': invalid section reference in info value\n" +msgstr "" + +#: src/elflint.c:4045 +#, c-format +msgid "section [%2zu] '%s': strings flag set without merge flag\n" +msgstr "" + +#: src/elflint.c:4050 +#, c-format +msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" +msgstr "" + +#: src/elflint.c:4069 +#, c-format +msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n" +msgstr "" + +#: src/elflint.c:4078 +#, c-format +msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n" +msgstr "" + +#: src/elflint.c:4085 +#, c-format +msgid "section [%2zu] '%s' is both executable and writable\n" +msgstr "" + +#: src/elflint.c:4116 +#, c-format +msgid "" +"section [%2zu] '%s' not fully contained in segment of program header entry " +"%d\n" +msgstr "" + +#: src/elflint.c:4126 +#, 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:4152 +#, 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:4163 +#, 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:4174 +#, c-format +msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n" +msgstr "" + +#: src/elflint.c:4184 +#, c-format +msgid "section [%2zu] '%s' is writable in unwritable segment %d\n" +msgstr "" + +#: src/elflint.c:4194 +#, c-format +msgid "" +"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" +msgstr "" + +#: src/elflint.c:4200 +#, 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:4208 +#, c-format +msgid "" +"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" +msgstr "" + +#: src/elflint.c:4263 +#, c-format +msgid "more than one version symbol table present\n" +msgstr "" + +#: src/elflint.c:4286 +#, c-format +msgid "INTERP program header entry but no .interp section\n" +msgstr "" + +#: src/elflint.c:4297 +#, c-format +msgid "" +"loadable segment [%u] is executable but contains no executable sections\n" +msgstr "" + +#: src/elflint.c:4303 +#, c-format +msgid "loadable segment [%u] is writable but contains no writable sections\n" +msgstr "" + +#: src/elflint.c:4314 +#, c-format +msgid "" +"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " +"exist\n" +msgstr "" + +#: src/elflint.c:4327 +#, c-format +msgid "duplicate version index %d\n" +msgstr "" + +#: src/elflint.c:4341 +#, c-format +msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" +msgstr "" + +#: src/elflint.c:4390 +#, c-format +msgid "phdr[%d]: unknown core file note type % at offset %\n" +msgstr "" + +#: src/elflint.c:4394 +#, c-format +msgid "" +"section [%2d] '%s': unknown core file note type % at offset %zu\n" +msgstr "" + +#: src/elflint.c:4450 +#, c-format +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" +msgstr "" + +#: src/elflint.c:4455 +#, c-format +msgid "" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" +msgstr "" + +#: src/elflint.c:4474 +#, c-format +msgid "phdr[%d]: no note entries defined for the type of file\n" +msgstr "" + +#: src/elflint.c:4494 +#, c-format +msgid "phdr[%d]: cannot get content of note section: %s\n" +msgstr "" + +#: src/elflint.c:4497 +#, c-format +msgid "phdr[%d]: extra % bytes after last note\n" +msgstr "" + +#: src/elflint.c:4518 +#, c-format +msgid "section [%2d] '%s': no note entries defined for the type of file\n" +msgstr "" + +#: src/elflint.c:4525 +#, c-format +msgid "section [%2d] '%s': cannot get content of note section\n" +msgstr "" + +#: src/elflint.c:4528 +#, c-format +msgid "section [%2d] '%s': extra % bytes after last note\n" +msgstr "" + +#: src/elflint.c:4546 +#, c-format +msgid "" +"only executables, shared objects, and core files can have program headers\n" +msgstr "" + +#: src/elflint.c:4561 +#, c-format +msgid "cannot get program header entry %d: %s\n" +msgstr "" + +#: src/elflint.c:4571 +#, c-format +msgid "program header entry %d: unknown program header entry type %#\n" +msgstr "" + +#: src/elflint.c:4582 +#, c-format +msgid "more than one INTERP entry in program header\n" +msgstr "" + +#: src/elflint.c:4590 +#, c-format +msgid "more than one TLS entry in program header\n" +msgstr "" + +#: src/elflint.c:4597 +#, c-format +msgid "static executable cannot have dynamic sections\n" +msgstr "" + +#: src/elflint.c:4611 +#, c-format +msgid "dynamic section reference in program header has wrong offset\n" +msgstr "" + +#: src/elflint.c:4614 +#, c-format +msgid "dynamic section size mismatch in program and section header\n" +msgstr "" + +#: src/elflint.c:4624 +#, c-format +msgid "more than one GNU_RELRO entry in program header\n" +msgstr "" + +#: src/elflint.c:4645 +#, c-format +msgid "loadable segment GNU_RELRO applies to is not writable\n" +msgstr "" + +#: src/elflint.c:4656 +#, c-format +msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" +msgstr "" + +#: src/elflint.c:4663 +#, c-format +msgid "" +"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" +msgstr "" + +#: src/elflint.c:4672 src/elflint.c:4695 +#, c-format +msgid "%s segment not contained in a loaded segment\n" +msgstr "" + +#: src/elflint.c:4701 +#, c-format +msgid "program header offset in ELF header and PHDR entry do not match" +msgstr "" + +#: src/elflint.c:4728 +#, c-format +msgid "call frame search table reference in program header has wrong offset\n" +msgstr "" + +#: src/elflint.c:4731 +#, c-format +msgid "call frame search table size mismatch in program and section header\n" +msgstr "" + +#: src/elflint.c:4744 +#, c-format +msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" +msgstr "" + +#: src/elflint.c:4752 +#, c-format +msgid "call frame search table must be allocated\n" +msgstr "" + +#: src/elflint.c:4755 +#, c-format +msgid "section [%2zu] '%s' must be allocated\n" +msgstr "" + +#: src/elflint.c:4759 +#, c-format +msgid "call frame search table must not be writable\n" +msgstr "" + +#: src/elflint.c:4762 +#, c-format +msgid "section [%2zu] '%s' must not be writable\n" +msgstr "" + +#: src/elflint.c:4767 +#, c-format +msgid "call frame search table must not be executable\n" +msgstr "" + +#: src/elflint.c:4770 +#, c-format +msgid "section [%2zu] '%s' must not be executable\n" +msgstr "" + +#: src/elflint.c:4784 +#, c-format +msgid "program header entry %d: file size greater than memory size\n" +msgstr "" + +#: src/elflint.c:4791 +#, c-format +msgid "program header entry %d: alignment not a power of 2\n" +msgstr "" + +#: src/elflint.c:4794 +#, c-format +msgid "" +"program header entry %d: file offset and virtual address not module of " +"alignment\n" +msgstr "" + +#: src/elflint.c:4807 +#, 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:4841 +#, c-format +msgid "cannot read ELF header: %s\n" +msgstr "" + +#: src/elflint.c:4853 +#, c-format +msgid "cannot create backend for ELF file\n" +msgstr "" + +#: src/elflint.c:4874 +#, c-format +msgid "text relocation flag set but not needed\n" +msgstr "" + +#: src/findtextrel.c:60 +msgid "Input Selection:" +msgstr "" + +#: src/findtextrel.c:61 +msgid "Prepend PATH to all file names" +msgstr "" + +#: src/findtextrel.c:63 +msgid "Use PATH as root of debuginfo hierarchy" +msgstr "" + +#. Short description of program. +#: src/findtextrel.c:70 +msgid "Locate source of text relocations in FILEs (a.out by default)." +msgstr "" + +#. Strings for arguments in help texts. +#: src/findtextrel.c:74 src/nm.c:107 src/objdump.c:70 src/size.c:79 +#: src/strings.c:86 src/strip.c:100 +msgid "[FILE...]" +msgstr "" + +#: src/findtextrel.c:223 +#, c-format +msgid "cannot get ELF header '%s': %s" +msgstr "" + +#: src/findtextrel.c:234 +#, c-format +msgid "'%s' is not a DSO or PIE" +msgstr "" + +#: src/findtextrel.c:254 +#, c-format +msgid "getting get section header of section %zu: %s" +msgstr "" + +#: src/findtextrel.c:278 +#, c-format +msgid "cannot read dynamic section: %s" +msgstr "" + +#: src/findtextrel.c:299 +#, c-format +msgid "no text relocations reported in '%s'" +msgstr "" + +#: src/findtextrel.c:310 +#, c-format +msgid "while reading ELF file" +msgstr "" + +#: src/findtextrel.c:314 +#, c-format +msgid "cannot get program header count: %s" +msgstr "" + +#: src/findtextrel.c:325 src/findtextrel.c:340 +#, c-format +msgid "cannot get program header index at offset %zd: %s" +msgstr "" + +#: src/findtextrel.c:396 +#, c-format +msgid "cannot get symbol table section %zu in '%s': %s" +msgstr "" + +#: src/findtextrel.c:417 src/findtextrel.c:440 +#, c-format +msgid "cannot get relocation at index %d in section %zu in '%s': %s" +msgstr "" + +#: src/findtextrel.c:506 +#, c-format +msgid "%s not compiled with -fpic/-fPIC\n" +msgstr "" + +#: src/findtextrel.c:560 +#, c-format +msgid "" +"the file containing the function '%s' is not compiled with -fpic/-fPIC\n" +msgstr "" + +#: src/findtextrel.c:567 src/findtextrel.c:587 +#, c-format +msgid "" +"the file containing the function '%s' might not be compiled with -fpic/-" +"fPIC\n" +msgstr "" + +#: src/findtextrel.c:575 +#, 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:595 +#, c-format +msgid "" +"a relocation modifies memory at offset %llu in a write-protected segment\n" +msgstr "" + +#: src/nm.c:65 src/strip.c:69 +msgid "Output selection:" +msgstr "" + +#: src/nm.c:66 +msgid "Display debugger-only symbols" +msgstr "" + +#: src/nm.c:67 +msgid "Display only defined symbols" +msgstr "" + +#: src/nm.c:70 +msgid "Display dynamic symbols instead of normal symbols" +msgstr "" + +#: src/nm.c:71 +msgid "Display only external symbols" +msgstr "" + +#: src/nm.c:72 +msgid "Display only undefined symbols" +msgstr "" + +#: src/nm.c:74 +msgid "Include index for symbols from archive members" +msgstr "" + +#: src/nm.c:76 src/size.c:53 +msgid "Output format:" +msgstr "" + +#: src/nm.c:78 +msgid "Print name of the input file before every symbol" +msgstr "" + +#: src/nm.c:81 +msgid "" +"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The " +"default is `sysv'" +msgstr "" + +#: src/nm.c:83 +msgid "Same as --format=bsd" +msgstr "" + +#: src/nm.c:84 +msgid "Same as --format=posix" +msgstr "" + +#: src/nm.c:85 src/size.c:59 +msgid "Use RADIX for printing symbol values" +msgstr "" + +#: src/nm.c:86 +msgid "Mark special symbols" +msgstr "" + +#: src/nm.c:88 +msgid "Print size of defined symbols" +msgstr "" + +#: src/nm.c:90 src/size.c:67 src/strip.c:74 src/unstrip.c:68 +msgid "Output options:" +msgstr "" + +#: src/nm.c:91 +msgid "Sort symbols numerically by address" +msgstr "" + +#: src/nm.c:93 +msgid "Do not sort the symbols" +msgstr "" + +#: src/nm.c:94 +msgid "Reverse the sense of the sort" +msgstr "" + +#: src/nm.c:97 +msgid "Decode low-level symbol names into source code names" +msgstr "" + +#. Short description of program. +#: src/nm.c:104 +msgid "List symbols from FILEs (a.out by default)." +msgstr "" + +#: src/nm.c:115 src/objdump.c:78 +msgid "Output formatting" +msgstr "" + +#: src/nm.c:139 src/objdump.c:102 src/size.c:104 src/strip.c:132 +#, c-format +msgid "%s: INTERNAL ERROR %d (%s): %s" +msgstr "" + +#: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 +#: src/strip.c:2763 +#, c-format +msgid "while closing '%s'" +msgstr "" + +#: src/nm.c:402 src/objdump.c:279 src/strip.c:827 +#, c-format +msgid "%s: File format not recognized" +msgstr "" + +#. Note: 0 is no valid offset. +#: src/nm.c:442 +msgid "" +"\n" +"Archive index:\n" +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:489 src/objdump.c:327 +#, c-format +msgid "%s%s%s: file format not recognized" +msgstr "" + +#: src/nm.c:702 +msgid "cannot create search tree" +msgstr "" + +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 +#, c-format +msgid "cannot get section header string table index" +msgstr "" + +#. We always print this prolog. +#: src/nm.c:767 +#, c-format +msgid "" +"\n" +"\n" +"Symbols from %s:\n" +"\n" +msgstr "" + +#. The header line. +#: src/nm.c:770 +#, c-format +msgid "" +"%*s%-*s %-*s Class Type %-*s %*s Section\n" +"\n" +msgstr "" + +#: src/nm.c:772 +msgctxt "sysv" +msgid "Name" +msgstr "" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:774 +msgctxt "sysv" +msgid "Value" +msgstr "" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:776 +msgctxt "sysv" +msgid "Size" +msgstr "" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:778 +msgctxt "sysv" +msgid "Line" +msgstr "" + +#: src/nm.c:1245 +#, c-format +msgid "%s: entry size in section %zd `%s' is not what we expect" +msgstr "" + +#: src/nm.c:1250 +#, c-format +msgid "%s: size of section %zd `%s' is not multiple of entry size" +msgstr "" + +#: src/nm.c:1330 +#, c-format +msgid "%s: entries (%zd) in section %zd `%s' is too large" +msgstr "" + +#. XXX Add machine specific object file types. +#: src/nm.c:1566 +#, c-format +msgid "%s%s%s%s: Invalid operation" +msgstr "" + +#: src/nm.c:1616 +#, c-format +msgid "%s%s%s: no symbols" +msgstr "" + +#: src/objdump.c:51 +msgid "Mode selection:" +msgstr "" + +#: src/objdump.c:52 +msgid "Display relocation information." +msgstr "" + +#: src/objdump.c:54 +msgid "Display the full contents of all sections requested" +msgstr "" + +#: src/objdump.c:56 +msgid "Display assembler code of executable sections" +msgstr "" + +#: src/objdump.c:58 +msgid "Output content selection:" +msgstr "" + +#: src/objdump.c:60 +msgid "Only display information for section NAME." +msgstr "" + +#. Short description of program. +#: src/objdump.c:66 +msgid "Show information from FILEs (a.out by default)." +msgstr "" + +#: src/objdump.c:217 src/readelf.c:630 +msgid "No operation specified.\n" +msgstr "" + +#: src/objdump.c:257 src/objdump.c:269 +#, c-format +msgid "while close `%s'" +msgstr "" + +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 +msgid "INVALID SYMBOL" +msgstr "" + +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 +msgid "INVALID SECTION" +msgstr "" + +#: src/objdump.c:497 +#, c-format +msgid "" +"\n" +"RELOCATION RECORDS FOR [%s]:\n" +"%-*s TYPE VALUE\n" +msgstr "" + +#: src/objdump.c:500 +msgid "OFFSET" +msgstr "" + +#: src/objdump.c:565 +#, c-format +msgid "Contents of section %s:\n" +msgstr "" + +#: src/objdump.c:686 +msgid "cannot disassemble" +msgstr "" + +#: src/objdump.c:757 +msgid "cannot create backend for elf file" +msgstr "" + +#. Short description of program. +#: src/ranlib.c:62 +msgid "Generate an index to speed access to archives." +msgstr "" + +#. Strings for arguments in help texts. +#: src/ranlib.c:65 +msgid "ARCHIVE" +msgstr "" + +#: src/ranlib.c:101 +#, c-format +msgid "Archive name required" +msgstr "" + +#: src/ranlib.c:165 +#, c-format +msgid "'%s' is no archive" +msgstr "" + +#: src/ranlib.c:200 +#, c-format +msgid "error while freeing sub-ELF descriptor: %s" +msgstr "" + +#: src/readelf.c:97 +msgid "ELF input selection:" +msgstr "" + +#: src/readelf.c:99 +msgid "" +"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" +msgstr "" + +#: src/readelf.c:102 +msgid "" +"Used with -w to find the skeleton Compile Units in FILE associated with the " +"Split Compile units in a .dwo input file" +msgstr "" + +#: src/readelf.c:104 +msgid "ELF output selection:" +msgstr "" + +#: src/readelf.c:106 +msgid "All these plus -p .strtab -p .dynstr -p .comment" +msgstr "" + +#: src/readelf.c:107 +msgid "Display the dynamic segment" +msgstr "" + +#: src/readelf.c:108 +msgid "Display the ELF file header" +msgstr "" + +#: src/readelf.c:110 +msgid "Display histogram of bucket list lengths" +msgstr "" + +#: src/readelf.c:111 +msgid "Display the program headers" +msgstr "" + +#: src/readelf.c:113 +msgid "Display relocations" +msgstr "" + +#: src/readelf.c:114 +msgid "Display the section groups" +msgstr "" + +#: src/readelf.c:115 +msgid "Display the sections' headers" +msgstr "" + +#: src/readelf.c:118 +msgid "Display the symbol table sections" +msgstr "" + +#: src/readelf.c:121 +msgid "Display (only) the dynamic symbol table" +msgstr "" + +#: src/readelf.c:122 +msgid "Display versioning information" +msgstr "" + +#: src/readelf.c:123 +msgid "Display the ELF notes" +msgstr "" + +#: src/readelf.c:125 +msgid "Display architecture specific information, if any" +msgstr "" + +#: src/readelf.c:127 +msgid "Display sections for exception handling" +msgstr "" + +#: src/readelf.c:129 +msgid "Additional output selection:" +msgstr "" + +#: src/readelf.c:131 +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 "" + +#: src/readelf.c:135 +msgid "Dump the uninterpreted contents of SECTION, by number or name" +msgstr "" + +#: src/readelf.c:137 +msgid "Print string contents of sections" +msgstr "" + +#: src/readelf.c:140 +msgid "Display the symbol index of an archive" +msgstr "" + +#: src/readelf.c:142 +msgid "Use the dynamic segment when possible for displaying info" +msgstr "" + +#: src/readelf.c:144 +msgid "Output control:" +msgstr "" + +#: src/readelf.c:146 +msgid "Do not find symbol names for addresses in DWARF data" +msgstr "" + +#: src/readelf.c:148 +msgid "" +"Display just offsets instead of resolving values to addresses in DWARF data" +msgstr "" + +#: src/readelf.c:150 +msgid "Ignored for compatibility (lines always wide)" +msgstr "" + +#: src/readelf.c:152 +msgid "" +"Show compression information for compressed sections (when used with -S); " +"decompress section before dumping data (when used with -p or -x)" +msgstr "" + +#. Short description of program. +#: src/readelf.c:157 +msgid "Print information from ELF file in human-readable form." +msgstr "" + +#. Look up once. +#: src/readelf.c:395 +msgid "yes" +msgstr "" + +#: src/readelf.c:396 +msgid "no" +msgstr "" + +#: src/readelf.c:598 +#, c-format +msgid "Unknown DWARF debug section `%s'.\n" +msgstr "" + +#: src/readelf.c:669 src/readelf.c:780 +#, c-format +msgid "cannot generate Elf descriptor: %s" +msgstr "" + +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 +#, c-format +msgid "cannot determine number of sections: %s" +msgstr "" + +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 +#, c-format +msgid "cannot get section: %s" +msgstr "" + +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 +#: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 +#: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 +#: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 +#: 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:711 +#, c-format +msgid "cannot get section name" +msgstr "" + +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 +#, c-format +msgid "cannot get %s content: %s" +msgstr "" + +#: src/readelf.c:736 +#, c-format +msgid "cannot create temp file '%s'" +msgstr "" + +#: src/readelf.c:745 +#, c-format +msgid "cannot write section data" +msgstr "" + +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 +#, c-format +msgid "error while closing Elf descriptor: %s" +msgstr "" + +#: src/readelf.c:758 +#, c-format +msgid "error while rewinding file descriptor" +msgstr "" + +#: src/readelf.c:792 +#, c-format +msgid "'%s' is not an archive, cannot print archive index" +msgstr "" + +#: src/readelf.c:896 +#, c-format +msgid "cannot stat input file" +msgstr "" + +#: src/readelf.c:898 +#, c-format +msgid "input file is empty" +msgstr "" + +#: src/readelf.c:900 +#, c-format +msgid "failed reading '%s': %s" +msgstr "" + +#: src/readelf.c:929 +#, c-format +msgid "No such section '%s' in '%s'" +msgstr "" + +#: src/readelf.c:988 +#, c-format +msgid "cannot read ELF header: %s" +msgstr "" + +#: src/readelf.c:996 +#, c-format +msgid "cannot create EBL handle" +msgstr "" + +#: src/readelf.c:1007 +#, c-format +msgid "cannot determine number of program headers: %s" +msgstr "" + +#: src/readelf.c:1039 +#, c-format +msgid "cannot read ELF: %s" +msgstr "" + +#: src/readelf.c:1072 +msgid "cannot find section" +msgstr "" + +#: src/readelf.c:1109 +msgid "NONE (None)" +msgstr "" + +#: src/readelf.c:1110 +msgid "REL (Relocatable file)" +msgstr "" + +#: src/readelf.c:1111 +msgid "EXEC (Executable file)" +msgstr "" + +#: src/readelf.c:1112 +msgid "DYN (Shared object file)" +msgstr "" + +#: src/readelf.c:1113 +msgid "CORE (Core file)" +msgstr "" + +#: src/readelf.c:1118 +#, c-format +msgid "OS Specific: (%x)\n" +msgstr "" + +#. && e_type <= ET_HIPROC always true +#: src/readelf.c:1120 +#, c-format +msgid "Processor Specific: (%x)\n" +msgstr "" + +#: src/readelf.c:1130 +msgid "" +"ELF Header:\n" +" Magic: " +msgstr "" + +#: src/readelf.c:1134 +#, c-format +msgid "" +"\n" +" Class: %s\n" +msgstr "" + +#: src/readelf.c:1139 +#, c-format +msgid " Data: %s\n" +msgstr "" + +#: src/readelf.c:1145 +#, c-format +msgid " Ident Version: %hhd %s\n" +msgstr "" + +#: src/readelf.c:1147 src/readelf.c:1169 +msgid "(current)" +msgstr "" + +#: src/readelf.c:1151 +#, c-format +msgid " OS/ABI: %s\n" +msgstr "" + +#: src/readelf.c:1154 +#, c-format +msgid " ABI Version: %hhd\n" +msgstr "" + +#: src/readelf.c:1157 +msgid " Type: " +msgstr "" + +#: src/readelf.c:1162 +#, c-format +msgid " Machine: %s\n" +msgstr "" + +#: src/readelf.c:1164 +#, c-format +msgid " Machine: : 0x%x\n" +msgstr "" + +#: src/readelf.c:1167 +#, c-format +msgid " Version: %d %s\n" +msgstr "" + +#: src/readelf.c:1171 +#, c-format +msgid " Entry point address: %#\n" +msgstr "" + +#: src/readelf.c:1174 +#, c-format +msgid " Start of program headers: % %s\n" +msgstr "" + +#: src/readelf.c:1175 src/readelf.c:1178 +msgid "(bytes into file)" +msgstr "" + +#: src/readelf.c:1177 +#, c-format +msgid " Start of section headers: % %s\n" +msgstr "" + +#: src/readelf.c:1180 +#, c-format +msgid " Flags: %s\n" +msgstr "" + +#: src/readelf.c:1183 +#, c-format +msgid " Size of this header: % %s\n" +msgstr "" + +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 +msgid "(bytes)" +msgstr "" + +#: src/readelf.c:1186 +#, c-format +msgid " Size of program header entries: % %s\n" +msgstr "" + +#: src/readelf.c:1189 +#, c-format +msgid " Number of program headers entries: %" +msgstr "" + +#: src/readelf.c:1196 +#, c-format +msgid " (% in [0].sh_info)" +msgstr "" + +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 +msgid " ([0] not available)" +msgstr "" + +#: src/readelf.c:1203 +#, c-format +msgid " Size of section header entries: % %s\n" +msgstr "" + +#: src/readelf.c:1206 +#, c-format +msgid " Number of section headers entries: %" +msgstr "" + +#: src/readelf.c:1213 +#, c-format +msgid " (% in [0].sh_size)" +msgstr "" + +#. We managed to get the zeroth section. +#: src/readelf.c:1226 +#, c-format +msgid " (% in [0].sh_link)" +msgstr "" + +#: src/readelf.c:1234 +#, c-format +msgid "" +" Section header string table index: XINDEX%s\n" +"\n" +msgstr "" + +#: src/readelf.c:1238 +#, c-format +msgid "" +" Section header string table index: %\n" +"\n" +msgstr "" + +#: src/readelf.c:1288 src/readelf.c:1496 +#, c-format +msgid "cannot get number of sections: %s" +msgstr "" + +#: src/readelf.c:1291 +#, c-format +msgid "" +"There are %zd section headers, starting at offset %#:\n" +"\n" +msgstr "" + +#: src/readelf.c:1299 +#, c-format +msgid "cannot get section header string table index: %s" +msgstr "" + +#: src/readelf.c:1302 +msgid "Section Headers:" +msgstr "" + +#: src/readelf.c:1305 +msgid "" +"[Nr] Name Type Addr Off Size ES Flags Lk " +"Inf Al" +msgstr "" + +#: src/readelf.c:1307 +msgid "" +"[Nr] Name Type Addr Off Size ES " +"Flags Lk Inf Al" +msgstr "" + +#: src/readelf.c:1312 +msgid " [Compression Size Al]" +msgstr "" + +#: src/readelf.c:1314 +msgid " [Compression Size Al]" +msgstr "" + +#: src/readelf.c:1392 +#, c-format +msgid "bad compression header for section %zd: %s" +msgstr "" + +#: src/readelf.c:1403 +#, c-format +msgid "bad gnu compressed size for section %zd: %s" +msgstr "" + +#: src/readelf.c:1421 +msgid "Program Headers:" +msgstr "" + +#: src/readelf.c:1423 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" +msgstr "" + +#: src/readelf.c:1426 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz " +"MemSiz Flg Align" +msgstr "" + +#: src/readelf.c:1483 +#, c-format +msgid "\t[Requesting program interpreter: %s]\n" +msgstr "" + +#: src/readelf.c:1508 +msgid "" +"\n" +" Section to Segment mapping:\n" +" Segment Sections..." +msgstr "" + +#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#, c-format +msgid "cannot get program header: %s" +msgstr "" + +#: src/readelf.c:1663 +#, 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:1668 +#, 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:1676 +msgid "" +msgstr "" + +#: src/readelf.c:1690 +msgid "" +msgstr "" + +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 +msgid "Couldn't uncompress section" +msgstr "" + +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 +#, c-format +msgid "cannot get section [%zd] header: %s" +msgstr "" + +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 +#, c-format +msgid "invalid sh_link value in section %zu" +msgstr "" + +#: src/readelf.c:1889 +#, c-format +msgid "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:1902 +#, c-format +msgid "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08\n" +msgid_plural "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:1912 +msgid " Type Value\n" +msgstr "" + +#: src/readelf.c:1921 +msgid "cannot get string table by using dynamic segment" +msgstr "" + +#: src/readelf.c:1960 +#, c-format +msgid "Shared library: [%s]\n" +msgstr "" + +#: src/readelf.c:1964 +#, c-format +msgid "Library soname: [%s]\n" +msgstr "" + +#: src/readelf.c:1968 +#, c-format +msgid "Library rpath: [%s]\n" +msgstr "" + +#: src/readelf.c:1972 +#, c-format +msgid "Library runpath: [%s]\n" +msgstr "" + +#: src/readelf.c:1993 +#, c-format +msgid "% (bytes)\n" +msgstr "" + +#: src/readelf.c:2109 src/readelf.c:2298 +#, c-format +msgid "" +"\n" +"Invalid symbol table at offset %#0\n" +msgstr "" + +#: src/readelf.c:2126 src/readelf.c:2315 +#, c-format +msgid "" +"\n" +"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0 " +"contains %d entry:\n" +msgid_plural "" +"\n" +"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0 " +"contains %d entries:\n" +msgstr[0] "" +msgstr[1] "" + +#. The .rel.dyn section does not refer to a specific section but +#. instead of section index zero. Do not try to print a section +#. name. +#. 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. +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 +#, c-format +msgid "" +"\n" +"Relocation section [%2u] '%s' at offset %#0 contains %d entry:\n" +msgid_plural "" +"\n" +"Relocation section [%2u] '%s' at offset %#0 contains %d entries:\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:2151 +msgid " Offset Type Value Name\n" +msgstr "" + +#: src/readelf.c:2153 +msgid " Offset Type Value Name\n" +msgstr "" + +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 +msgid "" +msgstr "" + +#: src/readelf.c:2340 +msgid " Offset Type Value Addend Name\n" +msgstr "" + +#: src/readelf.c:2342 +msgid " Offset Type Value Addend Name\n" +msgstr "" + +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "" + +#: src/readelf.c:2868 +#, 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:2873 +#, 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:2881 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr "" + +#: src/readelf.c:2883 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr "" + +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "" + +#: src/readelf.c:3102 +msgid "none" +msgstr "" + +#: src/readelf.c:3119 +msgid "| " +msgstr "" + +#: src/readelf.c:3149 +#, c-format +msgid "" +"\n" +"Version needs section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Version needs section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:3170 +#, c-format +msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" +msgstr "" + +#: src/readelf.c:3183 +#, c-format +msgid " %#06x: Name: %s Flags: %s Version: %hu\n" +msgstr "" + +#: src/readelf.c:3225 +#, c-format +msgid "" +"\n" +"Version definition section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Version definition section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:3253 +#, c-format +msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" +msgstr "" + +#: src/readelf.c:3268 +#, c-format +msgid " %#06x: Parent %d: %s\n" +msgstr "" + +#. Print the header. +#: src/readelf.c:3528 +#, c-format +msgid "" +"\n" +"Version symbols section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'" +msgid_plural "" +"\n" +"Version symbols section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:3556 +msgid " 0 *local* " +msgstr "" + +#: src/readelf.c:3561 +msgid " 1 *global* " +msgstr "" + +#: src/readelf.c:3603 +#, c-format +msgid "" +"\n" +"Histogram for bucket list length in section [%2u] '%s' (total of %d " +"bucket):\n" +" Addr: %#0* Offset: %#08 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* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:3625 +#, no-c-format +msgid " Length Number % of total Coverage\n" +msgstr "" + +#: src/readelf.c:3627 +#, c-format +msgid " 0 %6 %5.1f%%\n" +msgstr "" + +#: src/readelf.c:3634 +#, c-format +msgid "%7d %6 %5.1f%% %5.1f%%\n" +msgstr "" + +#: src/readelf.c:3647 +#, c-format +msgid "" +" Average number of tests: successful lookup: %f\n" +"\t\t\t unsuccessful lookup: %f\n" +msgstr "" + +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 +#, c-format +msgid "cannot get data for section %d: %s" +msgstr "" + +#: src/readelf.c:3673 +#, c-format +msgid "invalid data in sysv.hash section %d" +msgstr "" + +#: src/readelf.c:3702 +#, c-format +msgid "invalid chain in sysv.hash section %d" +msgstr "" + +#: src/readelf.c:3737 +#, c-format +msgid "invalid data in sysv.hash64 section %d" +msgstr "" + +#: src/readelf.c:3768 +#, c-format +msgid "invalid chain in sysv.hash64 section %d" +msgstr "" + +#: src/readelf.c:3804 +#, c-format +msgid "invalid data in gnu.hash section %d" +msgstr "" + +#: src/readelf.c:3870 +#, c-format +msgid "" +" Symbol Bias: %u\n" +" Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" +msgstr "" + +#: src/readelf.c:3955 +#, c-format +msgid "" +"\n" +"Library list section [%2zu] '%s' at offset %#0 contains %d entry:\n" +msgid_plural "" +"\n" +"Library list section [%2zu] '%s' at offset %#0 contains %d entries:\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:3969 +msgid "" +" Library Time Stamp Checksum Version " +"Flags" +msgstr "" + +#: src/readelf.c:4029 +#, c-format +msgid "" +"\n" +"Object attributes section [%2zu] '%s' of % bytes at offset " +"%#0:\n" +msgstr "" + +#: src/readelf.c:4046 +msgid " Owner Size\n" +msgstr "" + +#: src/readelf.c:4070 +#, c-format +msgid " %-13s %4\n" +msgstr "" + +#. Unknown subsection, print and skip. +#: src/readelf.c:4109 +#, c-format +msgid " %-4u %12\n" +msgstr "" + +#. Tag_File +#: src/readelf.c:4114 +#, c-format +msgid " File: %11\n" +msgstr "" + +#: src/readelf.c:4164 +#, c-format +msgid " %s: %, %s\n" +msgstr "" + +#: src/readelf.c:4167 +#, c-format +msgid " %s: %\n" +msgstr "" + +#: src/readelf.c:4170 +#, c-format +msgid " %s: %s\n" +msgstr "" + +#: src/readelf.c:4180 +#, c-format +msgid " %u: %\n" +msgstr "" + +#: src/readelf.c:4183 +#, c-format +msgid " %u: %s\n" +msgstr "" + +#: src/readelf.c:4221 +msgid "Couldn't get data from section" +msgstr "" + +#: src/readelf.c:4286 +msgid "sprintf failure" +msgstr "" + +#: src/readelf.c:4770 +msgid "empty block" +msgstr "" + +#: src/readelf.c:4773 +#, c-format +msgid "%zu byte block:" +msgstr "" + +#: src/readelf.c:5251 +#, c-format +msgid "%*s[%2] %s \n" +msgstr "" + +#: src/readelf.c:5423 +#, c-format +msgid "%s %# used with different address sizes" +msgstr "" + +#: src/readelf.c:5430 +#, c-format +msgid "%s %# used with different offset sizes" +msgstr "" + +#: src/readelf.c:5437 +#, c-format +msgid "%s %# used with different base addresses" +msgstr "" + +#: src/readelf.c:5444 +#, c-format +msgid "%s %# used with different attribute %s and %s" +msgstr "" + +#: src/readelf.c:5544 +#, c-format +msgid " [%6tx] \n" +msgstr "" + +#: src/readelf.c:5552 +#, c-format +msgid " [%6tx] ... % bytes ...\n" +msgstr "" + +#: src/readelf.c:5658 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" [ Code]\n" +msgstr "" + +#: src/readelf.c:5666 +#, c-format +msgid "" +"\n" +"Abbreviation section at offset %:\n" +msgstr "" + +#: src/readelf.c:5679 +#, c-format +msgid " *** error while reading abbreviation: %s\n" +msgstr "" + +#: src/readelf.c:5695 +#, c-format +msgid " [%5u] offset: %, children: %s, tag: %s\n" +msgstr "" + +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +msgstr "" + +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 +#, c-format +msgid " Length: %8\n" +msgstr "" + +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 +#, c-format +msgid " DWARF version: %8\n" +msgstr "" + +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 +#, c-format +msgid " Address size: %8\n" +msgstr "" + +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 +#, c-format +msgid " Segment size: %8\n" +msgstr "" + +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 +#, c-format +msgid "Unknown version" +msgstr "" + +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 +#, c-format +msgid "unsupported address size" +msgstr "" + +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 +#, c-format +msgid "unsupported segment size" +msgstr "" + +#: src/readelf.c:5952 +#, c-format +msgid "cannot get .debug_aranges content: %s" +msgstr "" + +#: src/readelf.c:5967 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %# contains %zu entry:\n" +msgid_plural "" +"\n" +"DWARF section [%2zu] '%s' at offset %# contains %zu entries:\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:5998 +#, c-format +msgid " [%*zu] ???\n" +msgstr "" + +#: src/readelf.c:6000 +#, c-format +msgid "" +" [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" +msgstr "" + +#: src/readelf.c:6038 src/readelf.c:8981 +#, c-format +msgid "" +"\n" +"Table at offset %zu:\n" +msgstr "" + +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 +#, c-format +msgid "invalid data in section [%zu] '%s'" +msgstr "" + +#: src/readelf.c:6058 +#, c-format +msgid "" +"\n" +" Length: %6\n" +msgstr "" + +#: src/readelf.c:6070 +#, c-format +msgid " DWARF version: %6\n" +msgstr "" + +#: src/readelf.c:6074 +#, c-format +msgid "unsupported aranges version" +msgstr "" + +#: src/readelf.c:6085 +#, c-format +msgid " CU offset: %6\n" +msgstr "" + +#: src/readelf.c:6091 +#, c-format +msgid " Address size: %6\n" +msgstr "" + +#: src/readelf.c:6102 +#, c-format +msgid "" +" Segment size: %6\n" +"\n" +msgstr "" + +#: src/readelf.c:6157 +#, c-format +msgid " %zu padding bytes\n" +msgstr "" + +#: src/readelf.c:6219 src/readelf.c:9727 +#, c-format +msgid "" +"Table at Offset 0x%:\n" +"\n" +msgstr "" + +#: src/readelf.c:6274 src/readelf.c:9782 +#, c-format +msgid " Offset entries: %8\n" +msgstr "" + +#: src/readelf.c:6290 src/readelf.c:9798 +#, c-format +msgid " Unknown CU base: " +msgstr "" + +#: src/readelf.c:6292 src/readelf.c:9800 +#, c-format +msgid " CU [%6] base: " +msgstr "" + +#: src/readelf.c:6298 src/readelf.c:9806 +#, c-format +msgid " Not associated with a CU.\n" +msgstr "" + +#: src/readelf.c:6309 src/readelf.c:9817 +#, c-format +msgid "too many offset entries for unit length" +msgstr "" + +#: src/readelf.c:6313 src/readelf.c:9821 +#, c-format +msgid " Offsets starting at 0x%:\n" +msgstr "" + +#: src/readelf.c:6365 +#, c-format +msgid "invalid range list data" +msgstr "" + +#: src/readelf.c:6550 src/readelf.c:10156 +#, c-format +msgid "" +" %zu padding bytes\n" +"\n" +msgstr "" + +#: src/readelf.c:6598 src/readelf.c:10205 +#, c-format +msgid "" +"\n" +" Unknown CU base: " +msgstr "" + +#: src/readelf.c:6600 src/readelf.c:10207 +#, c-format +msgid "" +"\n" +" CU [%6] base: " +msgstr "" + +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 +#, c-format +msgid " [%6tx] \n" +msgstr "" + +#: src/readelf.c:6634 src/readelf.c:10343 +msgid "base address" +msgstr "" + +#: src/readelf.c:6644 src/readelf.c:10353 +#, c-format +msgid " [%6tx] empty list\n" +msgstr "" + +#: src/readelf.c:6908 +msgid " \n" +msgstr "" + +#: src/readelf.c:7165 +#, c-format +msgid "cannot get ELF: %s" +msgstr "" + +#: src/readelf.c:7189 +#, c-format +msgid "" +"\n" +"Call frame information section [%2zu] '%s' at offset %#:\n" +msgstr "" + +#: src/readelf.c:7239 +#, c-format +msgid "" +"\n" +" [%6tx] Zero terminator\n" +msgstr "" + +#: src/readelf.c:7343 src/readelf.c:7497 +#, c-format +msgid "invalid augmentation length" +msgstr "" + +#: src/readelf.c:7358 +msgid "FDE address encoding: " +msgstr "" + +#: src/readelf.c:7364 +msgid "LSDA pointer encoding: " +msgstr "" + +#: src/readelf.c:7474 +#, c-format +msgid " (offset: %#)" +msgstr "" + +#: src/readelf.c:7481 +#, c-format +msgid " (end offset: %#)" +msgstr "" + +#: src/readelf.c:7518 +#, c-format +msgid " %-26sLSDA pointer: %#\n" +msgstr "" + +#: src/readelf.c:7603 +#, c-format +msgid "DIE [%] cannot get attribute code: %s" +msgstr "" + +#: src/readelf.c:7613 +#, c-format +msgid "DIE [%] cannot get attribute form: %s" +msgstr "" + +#: src/readelf.c:7635 +#, c-format +msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" +msgstr "" + +#: src/readelf.c:7965 +#, c-format +msgid "invalid file (%): %s" +msgstr "" + +#: src/readelf.c:7969 +#, c-format +msgid "no srcfiles for CU [%]" +msgstr "" + +#: src/readelf.c:7973 +#, c-format +msgid "couldn't get DWARF CU: %s" +msgstr "" + +#: src/readelf.c:8295 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" [Offset]\n" +msgstr "" + +#: src/readelf.c:8345 +#, c-format +msgid "cannot get next unit: %s" +msgstr "" + +#: src/readelf.c:8365 +#, c-format +msgid "" +" Type unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +" Type signature: %#, Type offset: %# [%]\n" +msgstr "" + +#: src/readelf.c:8377 +#, c-format +msgid "" +" Compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +msgstr "" + +#: src/readelf.c:8387 src/readelf.c:8548 +#, c-format +msgid " Unit type: %s (%)" +msgstr "" + +#: src/readelf.c:8414 +#, c-format +msgid "unknown version (%d) or unit type (%d)" +msgstr "" + +#: src/readelf.c:8443 +#, c-format +msgid "cannot get DIE offset: %s" +msgstr "" + +#: src/readelf.c:8452 +#, c-format +msgid "cannot get tag of DIE at offset [%] in section '%s': %s" +msgstr "" + +#: src/readelf.c:8488 +#, c-format +msgid "cannot get next DIE: %s\n" +msgstr "" + +#: src/readelf.c:8496 +#, c-format +msgid "cannot get next DIE: %s" +msgstr "" + +#: src/readelf.c:8540 +#, c-format +msgid "" +" Split compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +msgstr "" + +#: src/readelf.c:8592 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +"\n" +msgstr "" + +#: src/readelf.c:8924 +#, c-format +msgid "unknown form: %s" +msgstr "" + +#. Print what we got so far. +#: src/readelf.c:9072 +#, c-format +msgid "" +"\n" +" Length: %\n" +" DWARF version: %\n" +" Prologue length: %\n" +" Address size: %zd\n" +" Segment selector size: %zd\n" +" Min instruction length: %\n" +" Max operations per instruction: %\n" +" Initial value if 'is_stmt': %\n" +" Line base: %\n" +" Line range: %\n" +" Opcode base: %\n" +"\n" +"Opcodes:\n" +msgstr "" + +#: src/readelf.c:9094 +#, c-format +msgid "cannot handle .debug_line version: %u\n" +msgstr "" + +#: src/readelf.c:9102 +#, c-format +msgid "cannot handle address size: %u\n" +msgstr "" + +#: src/readelf.c:9110 +#, c-format +msgid "cannot handle segment selector size: %u\n" +msgstr "" + +#: src/readelf.c:9120 +#, c-format +msgid "invalid data at offset %tu in section [%zu] '%s'" +msgstr "" + +#: src/readelf.c:9135 +#, c-format +msgid " [%*] %hhu argument\n" +msgid_plural " [%*] %hhu arguments\n" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:9146 +msgid "" +"\n" +"Directory table:" +msgstr "" + +#: src/readelf.c:9152 src/readelf.c:9229 +#, c-format +msgid " [" +msgstr "" + +#: src/readelf.c:9223 +msgid "" +"\n" +"File name table:" +msgstr "" + +#: src/readelf.c:9284 +msgid " Entry Dir Time Size Name" +msgstr "" + +#: src/readelf.c:9330 +msgid "" +"\n" +"No line number statements." +msgstr "" + +#: src/readelf.c:9334 +msgid "" +"\n" +"Line number statements:" +msgstr "" + +#: src/readelf.c:9349 +#, c-format +msgid "invalid maximum operations per instruction is zero" +msgstr "" + +#: src/readelf.c:9383 +#, c-format +msgid " special opcode %u: address+%u = " +msgstr "" + +#: src/readelf.c:9387 +#, c-format +msgid ", op_index = %u, line%+d = %zu\n" +msgstr "" + +#: src/readelf.c:9390 +#, c-format +msgid ", line%+d = %zu\n" +msgstr "" + +#: src/readelf.c:9408 +#, c-format +msgid " extended opcode %u: " +msgstr "" + +#: src/readelf.c:9413 +msgid " end of sequence" +msgstr "" + +#: src/readelf.c:9431 +#, c-format +msgid " set address to " +msgstr "" + +#: src/readelf.c:9459 +#, c-format +msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" +msgstr "" + +#: src/readelf.c:9473 +#, c-format +msgid " set discriminator to %u\n" +msgstr "" + +#: src/readelf.c:9500 +#, c-format +msgid " set inlined context %u, function name %s (0x%x)\n" +msgstr "" + +#: src/readelf.c:9524 +#, c-format +msgid " set function name %s (0x%x)\n" +msgstr "" + +#. Unknown, ignore it. +#: src/readelf.c:9531 +msgid " unknown opcode" +msgstr "" + +#. Takes no argument. +#: src/readelf.c:9543 +msgid " copy" +msgstr "" + +#: src/readelf.c:9554 +#, c-format +msgid " advance address by %u to " +msgstr "" + +#: src/readelf.c:9558 src/readelf.c:9619 +#, c-format +msgid ", op_index to %u" +msgstr "" + +#: src/readelf.c:9570 +#, c-format +msgid " advance line by constant %d to %\n" +msgstr "" + +#: src/readelf.c:9580 +#, c-format +msgid " set file to %\n" +msgstr "" + +#: src/readelf.c:9591 +#, c-format +msgid " set column to %\n" +msgstr "" + +#: src/readelf.c:9598 +#, c-format +msgid " set '%s' to %\n" +msgstr "" + +#. Takes no argument. +#: src/readelf.c:9604 +msgid " set basic block flag" +msgstr "" + +#: src/readelf.c:9615 +#, c-format +msgid " advance address by constant %u to " +msgstr "" + +#: src/readelf.c:9635 +#, c-format +msgid " advance address by fixed value %u to \n" +msgstr "" + +#. Takes no argument. +#: src/readelf.c:9645 +msgid " set prologue end flag" +msgstr "" + +#. Takes no argument. +#: src/readelf.c:9650 +msgid " set epilogue begin flag" +msgstr "" + +#: src/readelf.c:9660 +#, c-format +msgid " set isa to %u\n" +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:9669 +#, c-format +msgid " unknown opcode with % parameter:" +msgid_plural " unknown opcode with % parameters:" +msgstr[0] "" +msgstr[1] "" + +#: src/readelf.c:9870 +#, c-format +msgid " \n" +msgstr "" + +#: src/readelf.c:9910 +#, c-format +msgid "invalid loclists data" +msgstr "" + +#: src/readelf.c:10380 src/readelf.c:11425 +msgid " \n" +msgstr "" + +#: src/readelf.c:10511 +#, c-format +msgid "%*s*** non-terminated string at end of section" +msgstr "" + +#: src/readelf.c:10534 +#, c-format +msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" +msgstr "" + +#: src/readelf.c:10629 +#, c-format +msgid " Offset: 0x%\n" +msgstr "" + +#: src/readelf.c:10641 +#, c-format +msgid " Version: %\n" +msgstr "" + +#: src/readelf.c:10647 src/readelf.c:11546 +#, c-format +msgid " unknown version, cannot parse section\n" +msgstr "" + +#: src/readelf.c:10654 +#, c-format +msgid " Flag: 0x%" +msgstr "" + +#: src/readelf.c:10683 +#, c-format +msgid " Offset length: %\n" +msgstr "" + +#: src/readelf.c:10691 +#, c-format +msgid " .debug_line offset: 0x%\n" +msgstr "" + +#: src/readelf.c:10716 +#, c-format +msgid " extension opcode table, % items:\n" +msgstr "" + +#: src/readelf.c:10723 +#, c-format +msgid " [%]" +msgstr "" + +#: src/readelf.c:10735 +#, c-format +msgid " % arguments:" +msgstr "" + +#: src/readelf.c:10750 +#, c-format +msgid " no arguments." +msgstr "" + +#: src/readelf.c:10951 +#, c-format +msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" +msgstr "" + +#: src/readelf.c:11006 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" %*s String\n" +msgstr "" + +#. TRANS: the debugstr| prefix makes the string unique. +#: src/readelf.c:11011 +msgctxt "debugstr" +msgid "Offset" +msgstr "" + +#: src/readelf.c:11021 +#, c-format +msgid " *** error, missing string terminator\n" +msgstr "" + +#: src/readelf.c:11143 +#, c-format +msgid " Length: %8\n" +msgstr "" + +#: src/readelf.c:11145 +#, c-format +msgid " Offset size: %8\n" +msgstr "" + +#: src/readelf.c:11159 +#, c-format +msgid " DWARF version: %8\n" +msgstr "" + +#: src/readelf.c:11168 +#, c-format +msgid " Padding: %8\n" +msgstr "" + +#: src/readelf.c:11222 +#, c-format +msgid "" +"\n" +"Call frame search table section [%2zu] '.eh_frame_hdr':\n" +msgstr "" + +#: src/readelf.c:11324 +#, c-format +msgid "" +"\n" +"Exception handling table section [%2zu] '.gcc_except_table':\n" +msgstr "" + +#: src/readelf.c:11347 +#, c-format +msgid " LPStart encoding: %#x " +msgstr "" + +#: src/readelf.c:11359 +#, c-format +msgid " TType encoding: %#x " +msgstr "" + +#: src/readelf.c:11376 +#, c-format +msgid " Call site encoding: %#x " +msgstr "" + +#: src/readelf.c:11391 +msgid "" +"\n" +" Call site table:" +msgstr "" + +#: src/readelf.c:11407 +#, c-format +msgid "" +" [%4u] Call site start: %#\n" +" Call site length: %\n" +" Landing pad: %#\n" +" Action: %u\n" +msgstr "" + +#: src/readelf.c:11480 +#, c-format +msgid "invalid TType encoding" +msgstr "" + +#: src/readelf.c:11507 +#, c-format +msgid "" +"\n" +"GDB section [%2zu] '%s' at offset %# contains % bytes :\n" +msgstr "" + +#: src/readelf.c:11536 +#, c-format +msgid " Version: %\n" +msgstr "" + +#: src/readelf.c:11555 +#, c-format +msgid " CU offset: %#\n" +msgstr "" + +#: src/readelf.c:11562 +#, c-format +msgid " TU offset: %#\n" +msgstr "" + +#: src/readelf.c:11569 +#, c-format +msgid " address offset: %#\n" +msgstr "" + +#: src/readelf.c:11576 +#, c-format +msgid " symbol offset: %#\n" +msgstr "" + +#: src/readelf.c:11586 +#, c-format +msgid " shortcut offset: %#\n" +msgstr "" + +#: src/readelf.c:11594 +#, c-format +msgid " constant offset: %#\n" +msgstr "" + +#: src/readelf.c:11608 +#, c-format +msgid "" +"\n" +" CU list at offset %# contains %zu entries:\n" +msgstr "" + +#: src/readelf.c:11633 +#, c-format +msgid "" +"\n" +" TU list at offset %# contains %zu entries:\n" +msgstr "" + +#: src/readelf.c:11662 +#, c-format +msgid "" +"\n" +" Address list at offset %# contains %zu entries:\n" +msgstr "" + +#: src/readelf.c:11705 +#, c-format +msgid "" +"\n" +" Symbol table at offset %# contains %zu slots:\n" +msgstr "" + +#: src/readelf.c:11790 +#, c-format +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "" + +#: src/readelf.c:11886 +#, c-format +msgid "cannot get debug context descriptor: %s" +msgstr "" + +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 +#, c-format +msgid "cannot convert core note data: %s" +msgstr "" + +#: src/readelf.c:12616 +#, c-format +msgid "" +"\n" +"%*s... ..." +msgstr "" + +#: src/readelf.c:13118 +msgid " Owner Data size Type\n" +msgstr "" + +#: src/readelf.c:13146 +#, c-format +msgid " %-13.*s %9 %s\n" +msgstr "" + +#: src/readelf.c:13198 +#, c-format +msgid "cannot get content of note: %s" +msgstr "" + +#: src/readelf.c:13231 +#, c-format +msgid "" +"\n" +"Note section [%2zu] '%s' of % bytes at offset %#0:\n" +msgstr "" + +#: src/readelf.c:13254 +#, c-format +msgid "" +"\n" +"Note segment of % bytes at offset %#0:\n" +msgstr "" + +#: src/readelf.c:13301 +#, c-format +msgid "" +"\n" +"Section [%zu] '%s' has no data to dump.\n" +msgstr "" + +#: src/readelf.c:13328 src/readelf.c:13379 +#, c-format +msgid "cannot get data for section [%zu] '%s': %s" +msgstr "" + +#: src/readelf.c:13333 +#, c-format +msgid "" +"\n" +"Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" +msgstr "" + +#: src/readelf.c:13338 +#, c-format +msgid "" +"\n" +"Hex dump of section [%zu] '%s', % bytes (%zd uncompressed) at offset " +"%#0:\n" +msgstr "" + +#: src/readelf.c:13352 +#, c-format +msgid "" +"\n" +"Section [%zu] '%s' has no strings to dump.\n" +msgstr "" + +#: src/readelf.c:13384 +#, c-format +msgid "" +"\n" +"String section [%zu] '%s' contains % bytes at offset %#0:\n" +msgstr "" + +#: src/readelf.c:13389 +#, c-format +msgid "" +"\n" +"String section [%zu] '%s' contains % bytes (%zd uncompressed) at " +"offset %#0:\n" +msgstr "" + +#: src/readelf.c:13437 +#, c-format +msgid "" +"\n" +"section [%lu] does not exist" +msgstr "" + +#: src/readelf.c:13467 +#, c-format +msgid "" +"\n" +"section '%s' does not exist" +msgstr "" + +#: src/readelf.c:13522 +#, c-format +msgid "cannot get symbol index of archive '%s': %s" +msgstr "" + +#: src/readelf.c:13525 +#, c-format +msgid "" +"\n" +"Archive '%s' has no symbol index\n" +msgstr "" + +#: src/readelf.c:13529 +#, c-format +msgid "" +"\n" +"Index of archive '%s' has %zu entries:\n" +msgstr "" + +#: src/readelf.c:13547 +#, c-format +msgid "cannot extract member at offset %zu in '%s': %s" +msgstr "" + +#: src/readelf.c:13552 +#, c-format +msgid "Archive member '%s' contains:\n" +msgstr "" + +#: src/size.c:55 +msgid "" +"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default " +"is `bsd'" +msgstr "" + +#: src/size.c:57 +msgid "Same as `--format=sysv'" +msgstr "" + +#: src/size.c:58 +msgid "Same as `--format=bsd'" +msgstr "" + +#: src/size.c:61 +msgid "Same as `--radix=10'" +msgstr "" + +#: src/size.c:62 +msgid "Same as `--radix=8'" +msgstr "" + +#: src/size.c:63 +msgid "Same as `--radix=16'" +msgstr "" + +#: src/size.c:65 +msgid "Similar to `--format=sysv' output but in one line" +msgstr "" + +#: src/size.c:69 +msgid "Print size and permission flags for loadable segments" +msgstr "" + +#: src/size.c:70 +msgid "Display the total sizes (bsd only)" +msgstr "" + +#. Short description of program. +#: src/size.c:75 +msgid "List section sizes of FILEs (a.out by default)." +msgstr "" + +#: src/size.c:239 +#, c-format +msgid "Invalid format: %s" +msgstr "" + +#: src/size.c:250 +#, c-format +msgid "Invalid radix: %s" +msgstr "" + +#: src/size.c:309 +#, c-format +msgid "%s: file format not recognized" +msgstr "" + +#: src/size.c:327 +msgctxt "bsd" +msgid "text" +msgstr "" + +#: src/size.c:328 +msgctxt "bsd" +msgid "data" +msgstr "" + +#: src/size.c:329 +msgctxt "bsd" +msgid "bss" +msgstr "" + +#: src/size.c:330 +msgctxt "bsd" +msgid "dec" +msgstr "" + +#: src/size.c:331 +msgctxt "bsd" +msgid "hex" +msgstr "" + +#: src/size.c:332 +msgctxt "bsd" +msgid "filename" +msgstr "" + +#: src/size.c:416 src/size.c:557 +#, c-format +msgid " (ex %s)" +msgstr "" + +#: src/size.c:418 +msgctxt "sysv" +msgid "section" +msgstr "" + +#: src/size.c:419 +msgctxt "sysv" +msgid "size" +msgstr "" + +#: src/size.c:420 +msgctxt "sysv" +msgid "addr" +msgstr "" + +#: src/size.c:449 src/size.c:452 src/size.c:455 +msgctxt "sysv" +msgid "Total" +msgstr "" + +#: src/size.c:479 +msgid "cannot get section header" +msgstr "" + +#: src/size.c:582 +msgid "(TOTALS)\n" +msgstr "" + +#: src/stack.c:487 +#, c-format +msgid "-p PID should be a positive process id." +msgstr "" + +#: src/stack.c:493 +#, c-format +msgid "Cannot open core file '%s'" +msgstr "" + +#: src/stack.c:553 +#, c-format +msgid "-n MAXFRAMES should be 0 or higher." +msgstr "" + +#: src/stack.c:565 +#, c-format +msgid "-e EXEC needs a core given by --core." +msgstr "" + +#: src/stack.c:569 +#, c-format +msgid "-1 needs a thread id given by -p." +msgstr "" + +#: src/stack.c:573 +#, c-format +msgid "One of -p PID or --core COREFILE should be given." +msgstr "" + +#: src/stack.c:645 +msgid "Show stack of process PID" +msgstr "" + +#: src/stack.c:647 +msgid "Show stack found in COREFILE" +msgstr "" + +#: src/stack.c:648 +msgid "(optional) EXECUTABLE that produced COREFILE" +msgstr "" + +#: src/stack.c:652 +msgid "Output selection options:" +msgstr "" + +#: src/stack.c:654 +msgid "Additionally show frame activation" +msgstr "" + +#: src/stack.c:656 +msgid "Additionally try to lookup DWARF debuginfo name for frame address" +msgstr "" + +#: src/stack.c:659 +msgid "" +"Additionally show inlined function frames using DWARF debuginfo if available " +"(implies -d)" +msgstr "" + +#: src/stack.c:661 +msgid "Additionally show module file information" +msgstr "" + +#: src/stack.c:663 +msgid "Additionally show source file information" +msgstr "" + +#: src/stack.c:665 +msgid "" +"Show all additional information (activation, debugname, inlines, module and " +"source)" +msgstr "" + +#: src/stack.c:667 +msgid "Do not resolve address to function symbol name" +msgstr "" + +#: src/stack.c:669 +msgid "Show raw function symbol names, do not try to demangle names" +msgstr "" + +#: src/stack.c:671 +msgid "Show module build-id, load address and pc offset" +msgstr "" + +#: src/stack.c:673 +msgid "Show the backtrace of only one thread" +msgstr "" + +#: src/stack.c:675 +msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)" +msgstr "" + +#: src/stack.c:677 +msgid "Show module memory map with build-id, elf and debug files detected" +msgstr "" + +#: 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 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:760 +#, c-format +msgid "Couldn't show any frames." +msgstr "" + +#: src/strings.c:64 +msgid "Output Selection:" +msgstr "" + +#: src/strings.c:65 +msgid "Scan entire file, not only loaded sections" +msgstr "" + +#: src/strings.c:67 +msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed" +msgstr "" + +#: src/strings.c:68 +msgid "" +"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, " +"{B,L} = 32-bit" +msgstr "" + +#: src/strings.c:72 +msgid "Print name of the file before each string." +msgstr "" + +#: src/strings.c:74 +msgid "Print location of the string in base 8, 10, or 16 respectively." +msgstr "" + +#: src/strings.c:75 +msgid "Alias for --radix=o" +msgstr "" + +#. Short description of program. +#: src/strings.c:82 +msgid "Print the strings of printable characters in files." +msgstr "" + +#: src/strings.c:255 src/strings.c:290 +#, c-format +msgid "invalid value '%s' for %s parameter" +msgstr "" + +#: src/strings.c:300 +msgid "invalid minimum length of matched string size" +msgstr "" + +#: src/strings.c:583 +msgid "lseek failed" +msgstr "" + +#: src/strings.c:600 src/strings.c:664 +msgid "re-mmap failed" +msgstr "" + +#: src/strings.c:637 +msgid "mprotect failed" +msgstr "" + +#: src/strings.c:726 +#, c-format +msgid "Skipping section %zd '%s' data outside file" +msgstr "" + +#: src/strip.c:70 +msgid "Place stripped output into FILE" +msgstr "" + +#: src/strip.c:71 +msgid "Extract the removed sections into FILE" +msgstr "" + +#: src/strip.c:72 +msgid "Embed name FILE instead of -f argument" +msgstr "" + +#: src/strip.c:76 +msgid "Remove all debugging symbols" +msgstr "" + +#: src/strip.c:80 +msgid "Remove section headers (not recommended)" +msgstr "" + +#: src/strip.c:82 +msgid "Copy modified/access timestamps to the output" +msgstr "" + +#: src/strip.c:84 +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 reversible, needs -f)" +msgstr "" + +#: src/strip.c:86 +msgid "" +"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)" +msgstr "" + +#: src/strip.c:88 +msgid "Remove .comment section" +msgstr "" + +#: src/strip.c:89 +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:90 +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:97 +msgid "Discard symbols from object files." +msgstr "" + +#: src/strip.c:245 +msgid "--reloc-debug-sections used without -f" +msgstr "" + +#: src/strip.c:251 +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" + +#: src/strip.c:265 +msgid "Only one input file allowed together with '-o' and '-f'" +msgstr "" + +#: src/strip.c:287 +#, c-format +msgid "-f option specified twice" +msgstr "" + +#: src/strip.c:296 +#, c-format +msgid "-F option specified twice" +msgstr "" + +#: src/strip.c:359 +#, c-format +msgid "cannot both keep and remove .comment section" +msgstr "" + +#: src/strip.c:478 +msgid "bad relocation" +msgstr "" + +#: src/strip.c:756 src/strip.c:780 +#, c-format +msgid "cannot stat input file '%s'" +msgstr "" + +#: src/strip.c:770 +#, c-format +msgid "while opening '%s'" +msgstr "" + +#: src/strip.c:808 +#, c-format +msgid "%s: cannot use -o or -f when stripping archive" +msgstr "" + +#. We would like to support ar archives, but currently it just +#. doesn't work at all since we call elf_clone on the members +#. which doesn't really support ar members. +#. result = handle_ar (fd, elf, NULL, fname, +#. preserve_dates ? tv : NULL); +#. +#: src/strip.c:820 +#, c-format +msgid "%s: no support for stripping archive" +msgstr "" + +#: src/strip.c:1057 +#, c-format +msgid "cannot open EBL backend" +msgstr "" + +#: src/strip.c:1101 +msgid "cannot get number of phdrs" +msgstr "" + +#: src/strip.c:1115 src/strip.c:1158 +#, c-format +msgid "cannot create new ehdr for file '%s': %s" +msgstr "" + +#: src/strip.c:1125 src/strip.c:1168 +#, c-format +msgid "cannot create new phdr for file '%s': %s" +msgstr "" + +#: src/strip.c:1248 +#, c-format +msgid "illformed file '%s'" +msgstr "" + +#: src/strip.c:1258 +#, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "" + +#: src/strip.c:1267 +#, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "" + +#: src/strip.c:1631 src/strip.c:1746 +#, c-format +msgid "while generating output file: %s" +msgstr "" + +#: src/strip.c:1695 +#, c-format +msgid "%s: error while updating ELF header: %s" +msgstr "" + +#: src/strip.c:1704 +#, c-format +msgid "%s: error while getting shdrstrndx: %s" +msgstr "" + +#: src/strip.c:1712 src/strip.c:2552 +#, c-format +msgid "%s: error updating shdrstrndx: %s" +msgstr "" + +#: src/strip.c:1729 +#, c-format +msgid "while preparing output for '%s'" +msgstr "" + +#: src/strip.c:1790 src/strip.c:1852 +#, c-format +msgid "while create section header section: %s" +msgstr "" + +#: src/strip.c:1799 +#, c-format +msgid "cannot allocate section data: %s" +msgstr "" + +#: src/strip.c:1863 +#, c-format +msgid "while create section header string table: %s" +msgstr "" + +#: src/strip.c:1869 +msgid "no memory to create section header string table" +msgstr "" + +#: src/strip.c:2082 +#, c-format +msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" +msgstr "" + +#: src/strip.c:2469 src/strip.c:2574 +#, c-format +msgid "while writing '%s': %s" +msgstr "" + +#: src/strip.c:2480 +#, c-format +msgid "while creating '%s'" +msgstr "" + +#: src/strip.c:2503 +#, c-format +msgid "while computing checksum for debug information" +msgstr "" + +#: src/strip.c:2544 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "" + +#: src/strip.c:2560 +#, c-format +msgid "%s: error while reading the file: %s" +msgstr "" + +#: src/strip.c:2599 src/strip.c:2619 +#, c-format +msgid "while writing '%s'" +msgstr "" + +#: src/strip.c:2656 src/strip.c:2663 +#, c-format +msgid "error while finishing '%s': %s" +msgstr "" + +#: src/strip.c:2680 src/strip.c:2756 +#, c-format +msgid "cannot set access and modification date of '%s'" +msgstr "" + +#: src/unstrip.c:65 +msgid "Match MODULE against file names, not module names" +msgstr "" + +#: src/unstrip.c:66 +msgid "Silently skip unfindable files" +msgstr "" + +#: src/unstrip.c:69 +msgid "Place output into FILE" +msgstr "" + +#: src/unstrip.c:71 +msgid "Create multiple output files under DIRECTORY" +msgstr "" + +#: src/unstrip.c:72 +msgid "Use module rather than file names" +msgstr "" + +#: src/unstrip.c:74 +msgid "Create output for modules that have no separate debug information" +msgstr "" + +#: src/unstrip.c:77 +msgid "Apply relocations to section contents in ET_REL files" +msgstr "" + +#: src/unstrip.c:79 +msgid "Only list module and file names, build IDs" +msgstr "" + +#: src/unstrip.c:81 +msgid "Force combining files even if some ELF headers don't seem to match" +msgstr "" + +#: src/unstrip.c:125 +#, c-format +msgid "-d option specified twice" +msgstr "" + +#: src/unstrip.c:160 +#, c-format +msgid "only one of -o or -d allowed" +msgstr "" + +#: src/unstrip.c:169 +#, c-format +msgid "-n cannot be used with explicit files or -o or -d" +msgstr "" + +#: src/unstrip.c:184 +#, c-format +msgid "output directory '%s'" +msgstr "" + +#: src/unstrip.c:193 +#, c-format +msgid "exactly two file arguments are required" +msgstr "" + +#: src/unstrip.c:199 +#, c-format +msgid "-m, -a, -R, and -i options not allowed with explicit files" +msgstr "" + +#: src/unstrip.c:212 +#, c-format +msgid "-o or -d is required when using implicit files" +msgstr "" + +#: src/unstrip.c:235 +#, c-format +msgid "cannot create ELF header: %s" +msgstr "" + +#: src/unstrip.c:239 +#, c-format +msgid "cannot get shdrstrndx:%s" +msgstr "" + +#: src/unstrip.c:243 src/unstrip.c:2085 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "" + +#: src/unstrip.c:253 +#, c-format +msgid "cannot get new zero section: %s" +msgstr "" + +#: src/unstrip.c:256 +#, c-format +msgid "cannot update new zero section: %s" +msgstr "" + +#: src/unstrip.c:260 +#, c-format +msgid "cannot copy ELF header: %s" +msgstr "" + +#: src/unstrip.c:264 src/unstrip.c:2103 src/unstrip.c:2146 +#, c-format +msgid "cannot get number of program headers: %s" +msgstr "" + +#: src/unstrip.c:269 src/unstrip.c:2107 +#, c-format +msgid "cannot create program headers: %s" +msgstr "" + +#: src/unstrip.c:275 +#, c-format +msgid "cannot copy program header: %s" +msgstr "" + +#: src/unstrip.c:285 +#, c-format +msgid "cannot copy section header: %s" +msgstr "" + +#: src/unstrip.c:288 src/unstrip.c:1707 +#, c-format +msgid "cannot get section data: %s" +msgstr "" + +#: src/unstrip.c:290 src/unstrip.c:1709 +#, c-format +msgid "cannot copy section data: %s" +msgstr "" + +#: src/unstrip.c:318 +#, c-format +msgid "cannot create directory '%s'" +msgstr "" + +#: src/unstrip.c:392 src/unstrip.c:657 src/unstrip.c:691 src/unstrip.c:859 +#: src/unstrip.c:1749 +#, c-format +msgid "cannot get symbol table entry: %s" +msgstr "" + +#: src/unstrip.c:408 src/unstrip.c:660 src/unstrip.c:681 src/unstrip.c:694 +#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989 +#, c-format +msgid "cannot update symbol table: %s" +msgstr "" + +#: src/unstrip.c:418 +#, c-format +msgid "cannot update section header: %s" +msgstr "" + +#: src/unstrip.c:464 +#, c-format +msgid "gelf_getrel failed: %s" +msgstr "" + +#: src/unstrip.c:467 src/unstrip.c:482 +#, c-format +msgid "cannot update relocation: %s" +msgstr "" + +#: src/unstrip.c:479 +#, c-format +msgid "gelf_getrela failed: %s" +msgstr "" + +#: src/unstrip.c:580 +#, c-format +msgid "cannot get symbol version: %s" +msgstr "" + +#: src/unstrip.c:593 +#, c-format +msgid "unexpected section type in [%zu] with sh_link to symtab" +msgstr "" + +#: src/unstrip.c:848 +#, c-format +msgid "cannot get symbol section data: %s" +msgstr "" + +#: src/unstrip.c:850 +#, c-format +msgid "cannot get string section data: %s" +msgstr "" + +#: src/unstrip.c:867 +#, c-format +msgid "invalid string offset in symbol [%zu]" +msgstr "" + +#: src/unstrip.c:1025 src/unstrip.c:1433 +#, c-format +msgid "cannot read section [%zu] name: %s" +msgstr "" + +#: src/unstrip.c:1040 +#, c-format +msgid "bad sh_link for group section: %s" +msgstr "" + +#: src/unstrip.c:1046 +#, c-format +msgid "couldn't get shdr for group section: %s" +msgstr "" + +#: src/unstrip.c:1051 +#, c-format +msgid "bad data for group symbol section: %s" +msgstr "" + +#: src/unstrip.c:1057 +#, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "" + +#: src/unstrip.c:1062 +#, c-format +msgid "bad symbol name for group section: %s" +msgstr "" + +#: src/unstrip.c:1073 src/unstrip.c:1553 +#, c-format +msgid "cannot find matching section for [%zu] '%s'" +msgstr "" + +#: src/unstrip.c:1118 src/unstrip.c:1137 src/unstrip.c:1175 +#, c-format +msgid "cannot read '.gnu.prelink_undo' section: %s" +msgstr "" + +#: src/unstrip.c:1155 +#, c-format +msgid "overflow with shnum = %zu in '%s' section" +msgstr "" + +#: src/unstrip.c:1166 +#, c-format +msgid "invalid contents in '%s' section" +msgstr "" + +#: src/unstrip.c:1337 src/unstrip.c:1353 src/unstrip.c:1633 src/unstrip.c:1924 +#, c-format +msgid "cannot add section name to string table: %s" +msgstr "" + +#: src/unstrip.c:1362 +#, c-format +msgid "cannot update section header string table data: %s" +msgstr "" + +#: src/unstrip.c:1391 src/unstrip.c:1395 +#, c-format +msgid "cannot get section header string table section index: %s" +msgstr "" + +#: src/unstrip.c:1399 src/unstrip.c:1403 src/unstrip.c:1648 +#, c-format +msgid "cannot get section count: %s" +msgstr "" + +#: src/unstrip.c:1406 +msgid "more sections in stripped file than debug file -- arguments reversed?" +msgstr "" + +#: src/unstrip.c:1410 +msgid "no sections in stripped file" +msgstr "" + +#: src/unstrip.c:1458 src/unstrip.c:1568 +#, c-format +msgid "cannot read section header string table: %s" +msgstr "" + +#: src/unstrip.c:1627 +#, c-format +msgid "cannot add new section: %s" +msgstr "" + +#: src/unstrip.c:1757 +#, c-format +msgid "symbol [%zu] has invalid section index" +msgstr "" + +#: src/unstrip.c:1789 +#, c-format +msgid "group has invalid section index [%zd]" +msgstr "" + +#: src/unstrip.c:2064 +#, c-format +msgid "cannot read section data: %s" +msgstr "" + +#: src/unstrip.c:2093 +#, c-format +msgid "cannot update ELF header: %s" +msgstr "" + +#: src/unstrip.c:2117 +#, c-format +msgid "cannot update program header: %s" +msgstr "" + +#: src/unstrip.c:2122 src/unstrip.c:2205 +#, c-format +msgid "cannot write output file: %s" +msgstr "" + +#: src/unstrip.c:2173 +#, c-format +msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" +msgstr "" + +#: src/unstrip.c:2176 +#, c-format +msgid "" +"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" +msgstr "" + +#: src/unstrip.c:2196 src/unstrip.c:2248 src/unstrip.c:2260 src/unstrip.c:2350 +#, c-format +msgid "cannot create ELF descriptor: %s" +msgstr "" + +#: src/unstrip.c:2234 +msgid "WARNING: " +msgstr "" + +#: src/unstrip.c:2236 +msgid ", use --force" +msgstr "" + +#: src/unstrip.c:2264 +msgid "ELF header identification (e_ident) different" +msgstr "" + +#: src/unstrip.c:2268 +msgid "ELF header type (e_type) different" +msgstr "" + +#: src/unstrip.c:2272 +msgid "ELF header machine type (e_machine) different" +msgstr "" + +#: src/unstrip.c:2276 +msgid "stripped program header (e_phnum) smaller than unstripped" +msgstr "" + +#: src/unstrip.c:2307 +#, c-format +msgid "cannot find stripped file for module '%s': %s" +msgstr "" + +#: src/unstrip.c:2311 +#, c-format +msgid "cannot open stripped file '%s' for module '%s': %s" +msgstr "" + +#: src/unstrip.c:2326 +#, c-format +msgid "cannot find debug file for module '%s': %s" +msgstr "" + +#: src/unstrip.c:2330 +#, c-format +msgid "cannot open debug file '%s' for module '%s': %s" +msgstr "" + +#: src/unstrip.c:2343 +#, c-format +msgid "module '%s' file '%s' is not stripped" +msgstr "" + +#: src/unstrip.c:2374 +#, c-format +msgid "cannot cache section addresses for module '%s': %s" +msgstr "" + +#: src/unstrip.c:2502 +msgid "no matching modules found" +msgstr "" + +#: src/unstrip.c:2512 +msgid "matched more than one module" +msgstr "" + +#: src/unstrip.c:2557 +msgid "" +"STRIPPED-FILE DEBUG-FILE\n" +"[MODULE...]" +msgstr "" + +#: src/unstrip.c:2558 +msgid "" +"Combine stripped files with separate symbols and debug information.\n" +"\n" +"The 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 "" + +#. Short description of program. +#: debuginfod/debuginfod-find.c:42 +msgid "Request debuginfo-related content from debuginfods listed in $" +msgstr "" + +#. Strings for arguments in help texts. +#: debuginfod/debuginfod-find.c:46 +msgid "" +"debuginfo BUILDID\n" +"debuginfo PATH\n" +"executable BUILDID\n" +"executable PATH\n" +"source BUILDID /FILENAME\n" +"source PATH /FILENAME\n" +"section BUILDID SECTION-NAME\n" +"section PATH SECTION-NAME\n" +msgstr "" + +#: tests/backtrace.c:491 +msgid "Run executable" +msgstr "" + +#: tests/dwflmodtest.c:209 +msgid "Additionally show function names" +msgstr "" + +#: tests/dwflmodtest.c:210 +msgid "Show instances of inlined functions" +msgstr "" diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c60795149dc4f06f9162385bdac4eaf508770cab Binary files /dev/null and b/po/en@boldquot.gmo differ diff --git a/po/en@boldquot.header b/po/en@boldquot.header new file mode 100644 index 0000000000000000000000000000000000000000..506ca9e9ecdcfc8aa893d96e20567afb69a09032 --- /dev/null +++ b/po/en@boldquot.header @@ -0,0 +1,25 @@ +# 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 +# https://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@boldquot.po b/po/en@boldquot.po new file mode 100644 index 0000000000000000000000000000000000000000..7d9c245c854deeeffbbd8c3a903ad10f1befc089 --- /dev/null +++ b/po/en@boldquot.po @@ -0,0 +1,7399 @@ +# English translations for elfutils package. +# Copyright (C) 2023 The elfutils developers +# This file is distributed under the same license as the elfutils package. +# Automatically generated, 2023. +# +# 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 +# https://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. +# +msgid "" +msgstr "" +"Project-Id-Version: elfutils 0.190\n" +"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" +"PO-Revision-Date: 2023-11-03 18:23+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: en@boldquot\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/color.c:51 +msgid "" +"colorize the output. WHEN defaults to 'always' or can be 'auto' or 'never'" +msgstr "" +"colorize the output. WHEN defaults to ‘always’ or can be ‘auto’ " +"or ‘never’" + +#: lib/color.c:127 +#, c-format +msgid "" +"%s: invalid argument '%s' for '--color'\n" +"valid arguments are:\n" +" - 'always', 'yes', 'force'\n" +" - 'never', 'no', 'none'\n" +" - 'auto', 'tty', 'if-tty'\n" +msgstr "" +"%s: invalid argument ‘%s’ for ‘--color’\n" +"valid arguments are:\n" +" - 'always', 'yes', ‘force’\n" +" - 'never', 'no', ‘none’\n" +" - 'auto', 'tty', ‘if-tty’\n" + +#: lib/printversion.c:39 +#, 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 "" +"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" + +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 +#: src/unstrip.c:311 +#, c-format +msgid "memory exhausted" +msgstr "memory exhausted" + +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 +#: libelf/elf_error.c:59 +msgid "no error" +msgstr "no error" + +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 +#: libelf/elf_error.c:90 +msgid "out of memory" +msgstr "out of memory" + +#: libasm/asm_error.c:66 +msgid "cannot create output file" +msgstr "cannot create output file" + +#: libasm/asm_error.c:67 +msgid "invalid parameter" +msgstr "invalid parameter" + +#: libasm/asm_error.c:68 +msgid "cannot change mode of output file" +msgstr "cannot change mode of output file" + +#: libasm/asm_error.c:69 +msgid "cannot rename output file" +msgstr "cannot rename output file" + +#: libasm/asm_error.c:70 +msgid "duplicate symbol" +msgstr "duplicate symbol" + +#: libasm/asm_error.c:71 +msgid "invalid section type for operation" +msgstr "invalid section type for operation" + +#: libasm/asm_error.c:72 +msgid "error during output of data" +msgstr "error during output of data" + +#: libasm/asm_error.c:73 +msgid "no backend support available" +msgstr "no backend support available" + +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 +#: libelf/elf_error.c:62 +msgid "unknown error" +msgstr "unknown error" + +#: libcpu/i386_lex.l:121 +#, c-format +msgid "invalid character '%c' at line %d; ignored" +msgstr "invalid character ‘%c’ at line %d; ignored" + +#: libcpu/i386_lex.l:122 +#, c-format +msgid "invalid character '\\%o' at line %d; ignored" +msgstr "invalid character ‘\\%o’ at line %d; ignored" + +#: libcpu/i386_parse.y:555 +#, c-format +msgid "while reading i386 CPU description: %s at line %d" +msgstr "while reading i386 CPU description: %s at line %d" + +#: libdw/dwarf_error.c:59 +msgid "invalid access" +msgstr "invalid access" + +#: libdw/dwarf_error.c:60 +msgid "no regular file" +msgstr "no regular file" + +#: libdw/dwarf_error.c:61 +msgid "I/O error" +msgstr "I/O error" + +#: libdw/dwarf_error.c:62 +msgid "invalid ELF file" +msgstr "invalid ELF file" + +#: libdw/dwarf_error.c:63 +msgid "no DWARF information" +msgstr "no DWARF information" + +#: libdw/dwarf_error.c:64 +msgid "cannot decompress DWARF" +msgstr "cannot decompress DWARF" + +#: libdw/dwarf_error.c:65 +msgid "no ELF file" +msgstr "no ELF file" + +#: libdw/dwarf_error.c:66 +msgid "cannot get ELF header" +msgstr "cannot get ELF header" + +#: libdw/dwarf_error.c:68 +msgid "not implemented" +msgstr "not implemented" + +#: libdw/dwarf_error.c:69 libelf/elf_error.c:110 libelf/elf_error.c:158 +msgid "invalid command" +msgstr "invalid command" + +#: libdw/dwarf_error.c:70 +msgid "invalid version" +msgstr "invalid version" + +#: libdw/dwarf_error.c:71 +msgid "invalid file" +msgstr "invalid file" + +#: libdw/dwarf_error.c:72 +msgid "no entries found" +msgstr "no entries found" + +#: libdw/dwarf_error.c:73 +msgid "invalid DWARF" +msgstr "invalid DWARF" + +#: libdw/dwarf_error.c:74 +msgid "no string data" +msgstr "no string data" + +#: libdw/dwarf_error.c:75 +msgid ".debug_str section missing" +msgstr ".debug_str section missing" + +#: libdw/dwarf_error.c:76 +msgid ".debug_line_str section missing" +msgstr ".debug_line_str section missing" + +#: libdw/dwarf_error.c:77 +msgid ".debug_str_offsets section missing" +msgstr ".debug_str_offsets section missing" + +#: libdw/dwarf_error.c:78 +msgid "no address value" +msgstr "no address value" + +#: libdw/dwarf_error.c:79 +msgid "no constant value" +msgstr "no constant value" + +#: libdw/dwarf_error.c:80 +msgid "no reference value" +msgstr "no reference value" + +#: libdw/dwarf_error.c:81 +msgid "invalid reference value" +msgstr "invalid reference value" + +#: libdw/dwarf_error.c:82 +msgid ".debug_line section missing" +msgstr ".debug_line section missing" + +#: libdw/dwarf_error.c:83 +msgid "invalid .debug_line section" +msgstr "invalid .debug_line section" + +#: libdw/dwarf_error.c:84 +msgid "debug information too big" +msgstr "debug information too big" + +#: libdw/dwarf_error.c:85 +msgid "invalid DWARF version" +msgstr "invalid DWARF version" + +#: libdw/dwarf_error.c:86 +msgid "invalid directory index" +msgstr "invalid directory index" + +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 +msgid "address out of range" +msgstr "address out of range" + +#: libdw/dwarf_error.c:88 +msgid ".debug_loc section missing" +msgstr ".debug_loc section missing" + +#: libdw/dwarf_error.c:89 +msgid ".debug_loclists section missing" +msgstr ".debug_loclists section missing" + +#: libdw/dwarf_error.c:90 +msgid "not a location list value" +msgstr "not a location list value" + +#: libdw/dwarf_error.c:91 +msgid "no block data" +msgstr "no block data" + +#: libdw/dwarf_error.c:92 +msgid "invalid line index" +msgstr "invalid line index" + +#: libdw/dwarf_error.c:93 +msgid "invalid address range index" +msgstr "invalid address range index" + +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 +msgid "no matching address range" +msgstr "no matching address range" + +#: libdw/dwarf_error.c:95 +msgid "no flag value" +msgstr "no flag value" + +#: libdw/dwarf_error.c:96 libelf/elf_error.c:235 +msgid "invalid offset" +msgstr "invalid offset" + +#: libdw/dwarf_error.c:97 +msgid ".debug_ranges section missing" +msgstr ".debug_ranges section missing" + +#: libdw/dwarf_error.c:98 +msgid ".debug_rnglists section missing" +msgstr ".debug_rnglists section missing" + +#: libdw/dwarf_error.c:99 +msgid "invalid CFI section" +msgstr "invalid CFI section" + +#: libdw/dwarf_error.c:100 +msgid "no alternative debug link found" +msgstr "no alternative debug link found" + +#: libdw/dwarf_error.c:101 +msgid "invalid opcode" +msgstr "invalid opcode" + +#: libdw/dwarf_error.c:102 +msgid "not a CU (unit) DIE" +msgstr "not a CU (unit) DIE" + +#: libdw/dwarf_error.c:103 +msgid "unknown language code" +msgstr "unknown language code" + +#: libdw/dwarf_error.c:104 +msgid ".debug_addr section missing" +msgstr ".debug_addr section missing" + +#: libdwfl/argp-std.c:45 src/stack.c:643 src/unstrip.c:2547 +msgid "Input selection options:" +msgstr "Input selection options:" + +#: libdwfl/argp-std.c:46 +msgid "Find addresses in FILE" +msgstr "Find addresses in FILE" + +#: libdwfl/argp-std.c:48 +msgid "Find addresses from signatures found in COREFILE" +msgstr "Find addresses from signatures found in COREFILE" + +#: libdwfl/argp-std.c:50 +msgid "Find addresses in files mapped into process PID" +msgstr "Find addresses in files mapped into process PID" + +#: libdwfl/argp-std.c:52 +msgid "" +"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps " +"format" +msgstr "" +"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps " +"format" + +#: libdwfl/argp-std.c:54 +msgid "Find addresses in the running kernel" +msgstr "Find addresses in the running kernel" + +#: libdwfl/argp-std.c:56 +msgid "Kernel with all modules" +msgstr "Kernel with all modules" + +#: libdwfl/argp-std.c:58 src/stack.c:650 +msgid "Search path for separate debuginfo files" +msgstr "Search path for separate debuginfo files" + +#: libdwfl/argp-std.c:159 +msgid "only one of -e, -p, -k, -K, or --core allowed" +msgstr "only one of -e, -p, -k, -K, or --core allowed" + +#: libdwfl/argp-std.c:232 +msgid "cannot load kernel symbols" +msgstr "cannot load kernel symbols" + +#. Non-fatal to have no modules since we do have the kernel. +#: libdwfl/argp-std.c:236 +msgid "cannot find kernel modules" +msgstr "cannot find kernel modules" + +#: libdwfl/argp-std.c:253 +msgid "cannot find kernel or modules" +msgstr "cannot find kernel or modules" + +#: libdwfl/argp-std.c:292 +#, c-format +msgid "cannot read ELF core file: %s" +msgstr "cannot read ELF core file: %s" + +#: libdwfl/argp-std.c:315 +msgid "Not enough memory" +msgstr "Not enough memory" + +#: libdwfl/argp-std.c:325 +msgid "No modules recognized in core file" +msgstr "No modules recognized in core file" + +#: libdwfl/libdwflP.h:50 +msgid "See errno" +msgstr "See errno" + +#: libdwfl/libdwflP.h:51 +msgid "See elf_errno" +msgstr "See elf_errno" + +#: libdwfl/libdwflP.h:52 +msgid "See dwarf_errno" +msgstr "See dwarf_errno" + +#: libdwfl/libdwflP.h:53 +msgid "See ebl_errno (XXX missing)" +msgstr "See ebl_errno (XXX missing)" + +#: libdwfl/libdwflP.h:54 +msgid "gzip decompression failed" +msgstr "gzip decompression failed" + +#: libdwfl/libdwflP.h:55 +msgid "bzip2 decompression failed" +msgstr "bzip2 decompression failed" + +#: libdwfl/libdwflP.h:56 +msgid "LZMA decompression failed" +msgstr "LZMA decompression failed" + +#: libdwfl/libdwflP.h:57 +msgid "zstd decompression failed" +msgstr "zstd decompression failed" + +#: libdwfl/libdwflP.h:58 +msgid "no support library found for machine" +msgstr "no support library found for machine" + +#: libdwfl/libdwflP.h:59 +msgid "Callbacks missing for ET_REL file" +msgstr "Callbacks missing for ET_REL file" + +#: libdwfl/libdwflP.h:60 +msgid "Unsupported relocation type" +msgstr "Unsupported relocation type" + +#: libdwfl/libdwflP.h:61 +msgid "r_offset is bogus" +msgstr "r_offset is bogus" + +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 +msgid "offset out of range" +msgstr "offset out of range" + +#: libdwfl/libdwflP.h:63 +msgid "relocation refers to undefined symbol" +msgstr "relocation refers to undefined symbol" + +#: libdwfl/libdwflP.h:64 +msgid "Callback returned failure" +msgstr "Callback returned failure" + +#: libdwfl/libdwflP.h:65 +msgid "No DWARF information found" +msgstr "No DWARF information found" + +#: libdwfl/libdwflP.h:66 +msgid "No symbol table found" +msgstr "No symbol table found" + +#: libdwfl/libdwflP.h:67 +msgid "No ELF program headers" +msgstr "No ELF program headers" + +#: libdwfl/libdwflP.h:68 +msgid "address range overlaps an existing module" +msgstr "address range overlaps an existing module" + +#: libdwfl/libdwflP.h:71 +msgid "image truncated" +msgstr "image truncated" + +#: libdwfl/libdwflP.h:72 +msgid "ELF file opened" +msgstr "ELF file opened" + +#: libdwfl/libdwflP.h:73 +msgid "not a valid ELF file" +msgstr "not a valid ELF file" + +#: libdwfl/libdwflP.h:74 +msgid "cannot handle DWARF type description" +msgstr "cannot handle DWARF type description" + +#: libdwfl/libdwflP.h:75 +msgid "ELF file does not match build ID" +msgstr "ELF file does not match build ID" + +#: libdwfl/libdwflP.h:76 +msgid "corrupt .gnu.prelink_undo section data" +msgstr "corrupt .gnu.prelink_undo section data" + +#: libdwfl/libdwflP.h:77 +msgid "Internal error due to ebl" +msgstr "Internal error due to ebl" + +#: libdwfl/libdwflP.h:78 +msgid "Missing data in core file" +msgstr "Missing data in core file" + +#: libdwfl/libdwflP.h:79 +msgid "Invalid register" +msgstr "Invalid register" + +#: libdwfl/libdwflP.h:80 +msgid "Unknown register value" +msgstr "Unknown register value" + +#: libdwfl/libdwflP.h:81 +msgid "Error reading process memory" +msgstr "Error reading process memory" + +#: libdwfl/libdwflP.h:82 +msgid "Couldn't find architecture of any ELF" +msgstr "Couldn't find architecture of any ELF" + +#: libdwfl/libdwflP.h:83 +msgid "Error parsing /proc filesystem" +msgstr "Error parsing /proc filesystem" + +#: libdwfl/libdwflP.h:84 +msgid "Invalid DWARF" +msgstr "Invalid DWARF" + +#: libdwfl/libdwflP.h:85 +msgid "Unsupported DWARF" +msgstr "Unsupported DWARF" + +#: libdwfl/libdwflP.h:86 +msgid "Unable to find more threads" +msgstr "Unable to find more threads" + +#: libdwfl/libdwflP.h:87 +msgid "Dwfl already has attached state" +msgstr "Dwfl already has attached state" + +#: libdwfl/libdwflP.h:88 +msgid "Dwfl has no attached state" +msgstr "Dwfl has no attached state" + +#: libdwfl/libdwflP.h:89 +msgid "Unwinding not supported for this architecture" +msgstr "Unwinding not supported for this architecture" + +#: libdwfl/libdwflP.h:90 +msgid "Invalid argument" +msgstr "Invalid argument" + +#: libdwfl/libdwflP.h:91 +msgid "Not an ET_CORE ELF file" +msgstr "Not an ET_CORE ELF file" + +#: libebl/eblbackendname.c:41 +msgid "No backend" +msgstr "No backend" + +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 +#: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 +#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 +msgid "" +msgstr "" + +#: libebl/ebldynamictagname.c:103 +#, c-format +msgid ": %#" +msgstr ": %#" + +#: libebl/eblobjnote.c:58 +#, c-format +msgid "unknown SDT version %u\n" +msgstr "unknown SDT version %u\n" + +#: libebl/eblobjnote.c:76 +#, c-format +msgid "invalid SDT probe descriptor\n" +msgstr "invalid SDT probe descriptor\n" + +#: libebl/eblobjnote.c:126 +#, c-format +msgid " PC: " +msgstr " PC: " + +#: libebl/eblobjnote.c:128 +#, c-format +msgid " Base: " +msgstr " Base: " + +#: libebl/eblobjnote.c:130 +#, c-format +msgid " Semaphore: " +msgstr " Semaphore: " + +#: libebl/eblobjnote.c:132 +#, c-format +msgid " Provider: " +msgstr " Provider: " + +#: libebl/eblobjnote.c:134 +#, c-format +msgid " Name: " +msgstr " Name: " + +#: libebl/eblobjnote.c:136 +#, c-format +msgid " Args: " +msgstr " Args: " + +#: libebl/eblobjnote.c:304 +#, c-format +msgid " Build ID: " +msgstr " Build ID: " + +#. A non-null terminated version string. +#: libebl/eblobjnote.c:315 +#, c-format +msgid " Linker version: %.*s\n" +msgstr " Linker version: %.*s\n" + +#: libebl/eblobjnote.c:642 +#, c-format +msgid " OS: %s, ABI: " +msgstr " OS: %s, ABI: " + +#: libebl/eblosabiname.c:70 +msgid "Stand alone" +msgstr "Stand alone" + +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 +#, c-format +msgid ": %d" +msgstr ": %d" + +#: libelf/elf_error.c:66 +msgid "unknown version" +msgstr "unknown version" + +#: libelf/elf_error.c:70 +msgid "unknown type" +msgstr "unknown type" + +#: libelf/elf_error.c:74 +msgid "invalid `Elf' handle" +msgstr "invalid ‘Elf’ handle" + +#: libelf/elf_error.c:78 +msgid "invalid size of source operand" +msgstr "invalid size of source operand" + +#: libelf/elf_error.c:82 +msgid "invalid size of destination operand" +msgstr "invalid size of destination operand" + +#: libelf/elf_error.c:86 src/readelf.c:6758 +#, c-format +msgid "invalid encoding" +msgstr "invalid encoding" + +#: libelf/elf_error.c:94 +msgid "invalid file descriptor" +msgstr "invalid file descriptor" + +#: libelf/elf_error.c:98 +msgid "invalid ELF file data" +msgstr "invalid ELF file data" + +#: libelf/elf_error.c:102 +msgid "invalid operation" +msgstr "invalid operation" + +#: libelf/elf_error.c:106 +msgid "ELF version not set" +msgstr "ELF version not set" + +#: libelf/elf_error.c:118 +msgid "invalid fmag field in archive header" +msgstr "invalid fmag field in archive header" + +#: libelf/elf_error.c:122 +msgid "invalid archive file" +msgstr "invalid archive file" + +#: libelf/elf_error.c:126 +msgid "descriptor is not for an archive" +msgstr "descriptor is not for an archive" + +#: libelf/elf_error.c:130 +msgid "no index available" +msgstr "no index available" + +#: libelf/elf_error.c:134 +msgid "cannot read data from file" +msgstr "cannot read data from file" + +#: libelf/elf_error.c:138 +msgid "cannot write data to file" +msgstr "cannot write data to file" + +#: libelf/elf_error.c:142 +msgid "invalid binary class" +msgstr "invalid binary class" + +#: libelf/elf_error.c:146 +msgid "invalid section index" +msgstr "invalid section index" + +#: libelf/elf_error.c:150 +msgid "invalid operand" +msgstr "invalid operand" + +#: libelf/elf_error.c:154 +msgid "invalid section" +msgstr "invalid section" + +#: libelf/elf_error.c:162 +msgid "executable header not created first" +msgstr "executable header not created first" + +#: libelf/elf_error.c:166 +msgid "file descriptor disabled" +msgstr "file descriptor disabled" + +#: libelf/elf_error.c:170 +msgid "archive/member file descriptor mismatch" +msgstr "archive/member file descriptor mismatch" + +#: libelf/elf_error.c:178 +msgid "cannot manipulate null section" +msgstr "cannot manipulate null section" + +#: libelf/elf_error.c:182 +msgid "data/scn mismatch" +msgstr "data/scn mismatch" + +#: libelf/elf_error.c:186 +msgid "invalid section header" +msgstr "invalid section header" + +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 +#, c-format +msgid "invalid data" +msgstr "invalid data" + +#: libelf/elf_error.c:194 +msgid "unknown data encoding" +msgstr "unknown data encoding" + +#: libelf/elf_error.c:198 +msgid "section `sh_size' too small for data" +msgstr "section ‘sh_size’ too small for data" + +#: libelf/elf_error.c:202 +msgid "invalid section alignment" +msgstr "invalid section alignment" + +#: libelf/elf_error.c:206 +msgid "invalid section entry size" +msgstr "invalid section entry size" + +#: libelf/elf_error.c:210 +msgid "update() for write on read-only file" +msgstr "update() for write on read-only file" + +#: libelf/elf_error.c:214 +msgid "no such file" +msgstr "no such file" + +#: libelf/elf_error.c:218 +msgid "only relocatable files can contain section groups" +msgstr "only relocatable files can contain section groups" + +#: libelf/elf_error.c:223 +msgid "" +"program header only allowed in executables, shared objects, and core files" +msgstr "" +"program header only allowed in executables, shared objects, and core files" + +#: libelf/elf_error.c:230 +msgid "file has no program header" +msgstr "file has no program header" + +#: libelf/elf_error.c:240 +msgid "invalid section type" +msgstr "invalid section type" + +#: libelf/elf_error.c:245 +msgid "invalid section flags" +msgstr "invalid section flags" + +#: libelf/elf_error.c:250 +msgid "section does not contain compressed data" +msgstr "section does not contain compressed data" + +#: libelf/elf_error.c:255 +msgid "section contains compressed data" +msgstr "section contains compressed data" + +#: libelf/elf_error.c:260 +msgid "unknown compression type" +msgstr "unknown compression type" + +#: libelf/elf_error.c:265 +msgid "cannot compress data" +msgstr "cannot compress data" + +#: libelf/elf_error.c:270 +msgid "cannot decompress data" +msgstr "cannot decompress data" + +#: src/addr2line.c:58 +msgid "Input format options:" +msgstr "Input format options:" + +#: src/addr2line.c:60 +msgid "Treat addresses as offsets relative to NAME section." +msgstr "Treat addresses as offsets relative to NAME section." + +#: src/addr2line.c:62 +msgid "Output format options:" +msgstr "Output format options:" + +#: src/addr2line.c:63 +msgid "Print address before each entry" +msgstr "Print address before each entry" + +#: src/addr2line.c:64 +msgid "Show only base names of source files" +msgstr "Show only base names of source files" + +#: src/addr2line.c:66 +msgid "Show absolute file names using compilation directory (default)" +msgstr "Show absolute file names using compilation directory (default)" + +#: src/addr2line.c:67 +msgid "Also show function names" +msgstr "Also show function names" + +#: src/addr2line.c:68 +msgid "Also show symbol or section names" +msgstr "Also show symbol or section names" + +#: src/addr2line.c:69 +msgid "Also show symbol and the section names" +msgstr "Also show symbol and the section names" + +#: src/addr2line.c:70 +msgid "Also show line table flags" +msgstr "Also show line table flags" + +#: src/addr2line.c:72 +msgid "" +"Show all source locations that caused inline expansion of subroutines at the " +"address." +msgstr "" +"Show all source locations that caused inline expansion of subroutines at the " +"address." + +#: src/addr2line.c:75 +msgid "Show demangled symbols (ARG is always ignored)" +msgstr "Show demangled symbols (ARG is always ignored)" + +#: src/addr2line.c:76 +msgid "Show demangled symbols" +msgstr "Show demangled symbols" + +#: src/addr2line.c:78 +msgid "Print all information on one line, and indent inlines" +msgstr "Print all information on one line, and indent inlines" + +#: src/addr2line.c:80 +msgid "Show relative file names without compilation directory" +msgstr "Show relative file names without compilation directory" + +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/strings.c:77 +msgid "Miscellaneous:" +msgstr "Miscellaneous:" + +#. Short description of program. +#: src/addr2line.c:90 +msgid "" +"Locate source files and line information for ADDRs (in a.out by default)." +msgstr "" +"Locate source files and line information for ADDRs (in a.out by default)." + +#. Strings for arguments in help texts. +#: src/addr2line.c:94 +msgid "[ADDR...]" +msgstr "[ADDR...]" + +#: src/addr2line.c:530 +msgid "Section syntax requires exactly one module" +msgstr "Section syntax requires exactly one module" + +#: src/addr2line.c:552 +#, c-format +msgid "offset %# lies outside section '%s'" +msgstr "offset %# lies outside section ‘%s’" + +#: src/addr2line.c:662 +#, c-format +msgid "cannot find symbol '%s'" +msgstr "cannot find symbol ‘%s’" + +#: src/addr2line.c:667 +#, c-format +msgid "offset %# lies outside contents of '%s'" +msgstr "offset %# lies outside contents of ‘%s’" + +#: src/ar.c:66 +msgid "Commands:" +msgstr "Commands:" + +#: src/ar.c:67 +msgid "Delete files from archive." +msgstr "Delete files from archive." + +#: src/ar.c:68 +msgid "Move files in archive." +msgstr "Move files in archive." + +#: src/ar.c:69 +msgid "Print files in archive." +msgstr "Print files in archive." + +#: src/ar.c:70 +msgid "Quick append files to archive." +msgstr "Quick append files to archive." + +#: src/ar.c:72 +msgid "Replace existing or insert new file into archive." +msgstr "Replace existing or insert new file into archive." + +#: src/ar.c:73 +msgid "Display content of archive." +msgstr "Display content of archive." + +#: src/ar.c:74 +msgid "Extract files from archive." +msgstr "Extract files from archive." + +#: src/ar.c:76 +msgid "Command Modifiers:" +msgstr "Command Modifiers:" + +#: src/ar.c:77 +msgid "Preserve original dates." +msgstr "Preserve original dates." + +#: src/ar.c:78 +msgid "Use instance [COUNT] of name." +msgstr "Use instance [COUNT] of name." + +#: src/ar.c:80 +msgid "Do not replace existing files with extracted files." +msgstr "Do not replace existing files with extracted files." + +#: src/ar.c:81 +msgid "Allow filename to be truncated if necessary." +msgstr "Allow filename to be truncated if necessary." + +#: src/ar.c:83 +msgid "Provide verbose output." +msgstr "Provide verbose output." + +#: src/ar.c:84 +msgid "Force regeneration of symbol table." +msgstr "Force regeneration of symbol table." + +#: src/ar.c:85 +msgid "Insert file after [MEMBER]." +msgstr "Insert file after [MEMBER]." + +#: src/ar.c:86 +msgid "Insert file before [MEMBER]." +msgstr "Insert file before [MEMBER]." + +#: src/ar.c:87 +msgid "Same as -b." +msgstr "Same as -b." + +#: src/ar.c:88 +msgid "Suppress message when library has to be created." +msgstr "Suppress message when library has to be created." + +#: src/ar.c:90 +msgid "Use full path for file matching." +msgstr "Use full path for file matching." + +#: src/ar.c:91 +msgid "Update only older files in archive." +msgstr "Update only older files in archive." + +#. Short description of program. +#: src/ar.c:97 +msgid "Create, modify, and extract from archives." +msgstr "Create, modify, and extract from archives." + +#. Strings for arguments in help texts. +#: src/ar.c:100 +msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]" +msgstr "[MEMBER] [COUNT] ARCHIVE [FILE...]" + +#: src/ar.c:179 +#, c-format +msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options" +msgstr "" +"'a', 'b', and ‘i’ are only allowed with the ‘m’ and ‘r’ " +"options" + +#: src/ar.c:184 +#, c-format +msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers" +msgstr "MEMBER parameter required for 'a', 'b', and ‘i’ modifiers" + +#: src/ar.c:200 +#, c-format +msgid "'N' is only meaningful with the 'x' and 'd' options" +msgstr "‘N’ is only meaningful with the ‘x’ and ‘d’ options" + +#: src/ar.c:205 +#, c-format +msgid "COUNT parameter required" +msgstr "COUNT parameter required" + +#: src/ar.c:217 +#, c-format +msgid "invalid COUNT parameter %s" +msgstr "invalid COUNT parameter %s" + +#: src/ar.c:224 +#, c-format +msgid "'%c' is only meaningful with the 'x' option" +msgstr "‘%c’ is only meaningful with the ‘x’ option" + +#: src/ar.c:230 +#, c-format +msgid "archive name required" +msgstr "archive name required" + +#: src/ar.c:243 +#, c-format +msgid "command option required" +msgstr "command option required" + +#: src/ar.c:294 +#, c-format +msgid "More than one operation specified" +msgstr "More than one operation specified" + +#: src/ar.c:388 +#, c-format +msgid "cannot open archive '%s'" +msgstr "cannot open archive ‘%s’" + +#: src/ar.c:398 +#, c-format +msgid "cannot open archive '%s': %s" +msgstr "cannot open archive '%s': %s" + +#: src/ar.c:402 +#, c-format +msgid "%s: not an archive file" +msgstr "%s: not an archive file" + +#: src/ar.c:406 +#, c-format +msgid "cannot stat archive '%s'" +msgstr "cannot stat archive ‘%s’" + +#: src/ar.c:418 +#, c-format +msgid "no entry %s in archive\n" +msgstr "no entry %s in archive\n" + +#: src/ar.c:471 src/ar.c:925 src/ar.c:1131 +msgid "cannot create hash table" +msgstr "cannot create hash table" + +#: src/ar.c:477 src/ar.c:931 src/ar.c:1139 +msgid "cannot insert into hash table" +msgstr "cannot insert into hash table" + +#: src/ar.c:485 src/ranlib.c:147 +#, c-format +msgid "cannot stat '%s'" +msgstr "cannot stat ‘%s’" + +#: src/ar.c:587 +#, c-format +msgid "cannot read content of %s: %s" +msgstr "cannot read content of %s: %s" + +#: src/ar.c:630 +#, c-format +msgid "cannot open %.*s" +msgstr "cannot open %.*s" + +#: src/ar.c:652 +#, c-format +msgid "failed to write %s" +msgstr "failed to write %s" + +#: src/ar.c:664 +#, c-format +msgid "cannot change mode of %s" +msgstr "cannot change mode of %s" + +#: src/ar.c:680 +#, c-format +msgid "cannot change modification time of %s" +msgstr "cannot change modification time of %s" + +#: src/ar.c:726 +#, c-format +msgid "cannot rename temporary file to %.*s" +msgstr "cannot rename temporary file to %.*s" + +#: src/ar.c:762 src/ar.c:1016 src/ar.c:1419 src/ranlib.c:221 +#, c-format +msgid "cannot create new file" +msgstr "cannot create new file" + +#: src/ar.c:1221 +#, c-format +msgid "position member %s not found" +msgstr "position member %s not found" + +#: src/ar.c:1231 +#, c-format +msgid "%s: no entry %s in archive!\n" +msgstr "%s: no entry %s in archive!\n" + +#: src/ar.c:1260 src/objdump.c:240 +#, c-format +msgid "cannot open %s" +msgstr "cannot open %s" + +#: src/ar.c:1265 +#, c-format +msgid "cannot stat %s" +msgstr "cannot stat %s" + +#: src/ar.c:1271 +#, c-format +msgid "%s is no regular file" +msgstr "%s is no regular file" + +#: src/ar.c:1284 +#, c-format +msgid "cannot get ELF descriptor for %s: %s\n" +msgstr "cannot get ELF descriptor for %s: %s\n" + +#: src/ar.c:1304 +#, c-format +msgid "cannot read %s: %s" +msgstr "cannot read %s: %s" + +#: src/ar.c:1479 +#, c-format +msgid "cannot represent ar_date" +msgstr "cannot represent ar_date" + +#: src/ar.c:1485 +#, c-format +msgid "cannot represent ar_uid" +msgstr "cannot represent ar_uid" + +#: src/ar.c:1491 +#, c-format +msgid "cannot represent ar_gid" +msgstr "cannot represent ar_gid" + +#: src/ar.c:1497 +#, c-format +msgid "cannot represent ar_mode" +msgstr "cannot represent ar_mode" + +#: src/ar.c:1503 +#, c-format +msgid "cannot represent ar_size" +msgstr "cannot represent ar_size" + +#: src/arlib-argp.c:31 +msgid "Use zero for uid, gid, and date in archive members." +msgstr "Use zero for uid, gid, and date in archive members." + +#: src/arlib-argp.c:33 +msgid "Use actual uid, gid, and date in archive members." +msgstr "Use actual uid, gid, and date in archive members." + +#: src/arlib-argp.c:62 +#, c-format +msgid "%s (default)" +msgstr "%s (default)" + +#. The archive is too big. +#: src/arlib.c:212 +#, c-format +msgid "the archive '%s' is too large" +msgstr "the archive ‘%s’ is too large" + +#: src/arlib.c:225 +#, c-format +msgid "cannot read ELF header of %s(%s): %s" +msgstr "cannot read ELF header of %s(%s): %s" + +#: src/elfclassify.c:91 +msgid "opening" +msgstr "opening" + +#: src/elfclassify.c:98 +msgid "reading" +msgstr "reading" + +#: src/elfclassify.c:244 +msgid "ELF header" +msgstr "ELF header" + +#: src/elfclassify.c:255 +msgid "program headers" +msgstr "program headers" + +#: src/elfclassify.c:264 +msgid "program header" +msgstr "program header" + +#: src/elfclassify.c:284 +msgid "section headers" +msgstr "section headers" + +#: src/elfclassify.c:295 +msgid "section header string table index" +msgstr "section header string table index" + +#: src/elfclassify.c:309 +msgid "could not obtain section header" +msgstr "could not obtain section header" + +#: src/elfclassify.c:315 +msgid "could not obtain section name" +msgstr "could not obtain section name" + +#: src/elfclassify.c:828 +msgid "writing to standard output" +msgstr "writing to standard output" + +#: src/elfclassify.c:855 +msgid "reading from standard input" +msgstr "reading from standard input" + +#: src/elfclassify.c:876 +msgid "Classification options" +msgstr "Classification options" + +#: src/elfclassify.c:878 +msgid "File looks like an ELF object or archive/static library (default)" +msgstr "File looks like an ELF object or archive/static library (default)" + +#: src/elfclassify.c:881 +msgid "File is an regular ELF object (not an archive/static library)" +msgstr "File is an regular ELF object (not an archive/static library)" + +#: src/elfclassify.c:884 +msgid "File is an ELF archive or static library" +msgstr "File is an ELF archive or static library" + +#: src/elfclassify.c:887 +msgid "File is an ELF core dump file" +msgstr "File is an ELF core dump file" + +#: src/elfclassify.c:890 +msgid "" +"File is an ELF file with symbol table or .debug_* sections and can be " +"stripped further" +msgstr "" +"File is an ELF file with symbol table or .debug_* sections and can be " +"stripped further" + +#: src/elfclassify.c:893 +msgid "File is (primarily) an ELF program executable (not primarily a DSO)" +msgstr "File is (primarily) an ELF program executable (not primarily a DSO)" + +#: src/elfclassify.c:896 +msgid "File is an ELF program executable (might also be a DSO)" +msgstr "File is an ELF program executable (might also be a DSO)" + +#: src/elfclassify.c:899 +msgid "" +"File is (primarily) an ELF shared object (DSO) (not primarily an executable)" +msgstr "" +"File is (primarily) an ELF shared object (DSO) (not primarily an executable)" + +#: src/elfclassify.c:902 +msgid "File is an ELF shared object (DSO) (might also be an executable)" +msgstr "File is an ELF shared object (DSO) (might also be an executable)" + +#: src/elfclassify.c:906 +msgid "File is a linux kernel module" +msgstr "File is a linux kernel module" + +#: src/elfclassify.c:908 +msgid "File is a debug only ELF file (separate .debug, .dwo or dwz multi-file)" +msgstr "" +"File is a debug only ELF file (separate .debug, .dwo or dwz multi-file)" + +#: src/elfclassify.c:911 +msgid "File is a loadable ELF object (program or shared object)" +msgstr "File is a loadable ELF object (program or shared object)" + +#: src/elfclassify.c:940 +msgid "Input flags" +msgstr "Input flags" + +#: src/elfclassify.c:942 +msgid "Only classify regular (not symlink nor special device) files" +msgstr "Only classify regular (not symlink nor special device) files" + +#: src/elfclassify.c:944 +msgid "" +"Also read file names to process from standard input, separated by newlines" +msgstr "" +"Also read file names to process from standard input, separated by newlines" + +#: src/elfclassify.c:947 +msgid "" +"Also read file names to process from standard input, separated by ASCII NUL " +"bytes" +msgstr "" +"Also read file names to process from standard input, separated by ASCII NUL " +"bytes" + +#: src/elfclassify.c:950 +msgid "Do not read files from standard input (default)" +msgstr "Do not read files from standard input (default)" + +#: src/elfclassify.c:952 +msgid "Try to open compressed files or embedded (kernel) ELF images" +msgstr "Try to open compressed files or embedded (kernel) ELF images" + +#: src/elfclassify.c:955 +msgid "Output flags" +msgstr "Output flags" + +#: src/elfclassify.c:957 +msgid "Output names of files, separated by newline" +msgstr "Output names of files, separated by newline" + +#: src/elfclassify.c:959 +msgid "Output names of files, separated by ASCII NUL" +msgstr "Output names of files, separated by ASCII NUL" + +#: src/elfclassify.c:961 +msgid "Do not output file names" +msgstr "Do not output file names" + +#: src/elfclassify.c:963 +msgid "If printing file names, print matching files (default)" +msgstr "If printing file names, print matching files (default)" + +#: src/elfclassify.c:965 +msgid "If printing file names, print files that do not match" +msgstr "If printing file names, print files that do not match" + +#: src/elfclassify.c:967 +msgid "Additional flags" +msgstr "Additional flags" + +#: src/elfclassify.c:969 +msgid "Output additional information (can be specified multiple times)" +msgstr "Output additional information (can be specified multiple times)" + +#: src/elfclassify.c:971 +msgid "Suppress some error output (counterpart to --verbose)" +msgstr "Suppress some error output (counterpart to --verbose)" + +#. Strings for arguments in help texts. +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 +msgid "FILE..." +msgstr "FILE..." + +#: src/elfclassify.c:980 +msgid "" +"Determine the type of an ELF file.\n" +"\n" +"All of the classification options must apply at the same time to a " +"particular file. Classification options can be negated using a \"--not-\" " +"prefix.\n" +"\n" +"Since modern ELF does not clearly distinguish between programs and dynamic " +"shared objects, you should normally use either --executable or --shared to " +"identify the primary purpose of a file. Only one of the --shared and --" +"executable checks can pass for a file.\n" +"\n" +"If you want to know whether an ELF object might a program or a shared " +"library (but could be both), then use --program or --library. Some ELF files " +"will classify as both a program and a library.\n" +"\n" +"If you just want to know whether an ELF file is loadable (as program or " +"library) use --loadable. Note that files that only contain (separate) debug " +"information (--debug-only) are never --loadable (even though they might " +"contain program headers). Linux kernel modules are also not --loadable (in " +"the normal sense).\n" +"\n" +"Without any of the --print options, the program exits with status 0 if the " +"requested checks pass for all input files, with 1 if a check fails for any " +"file, and 2 if there is an environmental issue (such as a file read error or " +"a memory allocation error).\n" +"\n" +"When printing file names, the program exits with status 0 even if no file " +"names are printed, and exits with status 2 if there is an environmental " +"issue.\n" +"\n" +"On usage error (e.g. a bad option was given), the program exits with a " +"status code larger than 2.\n" +"\n" +"The --quiet or -q option suppresses some error warning output, but doesn't " +"change the exit status." +msgstr "" +"Determine the type of an ELF file.\n" +"\n" +"All of the classification options must apply at the same time to a " +"particular file. Classification options can be negated using a “--not-" +"[0m” prefix.\n" +"\n" +"Since modern ELF does not clearly distinguish between programs and dynamic " +"shared objects, you should normally use either --executable or --shared to " +"identify the primary purpose of a file. Only one of the --shared and --" +"executable checks can pass for a file.\n" +"\n" +"If you want to know whether an ELF object might a program or a shared " +"library (but could be both), then use --program or --library. Some ELF files " +"will classify as both a program and a library.\n" +"\n" +"If you just want to know whether an ELF file is loadable (as program or " +"library) use --loadable. Note that files that only contain (separate) debug " +"information (--debug-only) are never --loadable (even though they might " +"contain program headers). Linux kernel modules are also not --loadable (in " +"the normal sense).\n" +"\n" +"Without any of the --print options, the program exits with status 0 if the " +"requested checks pass for all input files, with 1 if a check fails for any " +"file, and 2 if there is an environmental issue (such as a file read error or " +"a memory allocation error).\n" +"\n" +"When printing file names, the program exits with status 0 even if no file " +"names are printed, and exits with status 2 if there is an environmental " +"issue.\n" +"\n" +"On usage error (e.g. a bad option was given), the program exits with a " +"status code larger than 2.\n" +"\n" +"The --quiet or -q option suppresses some error warning output, but doesn't " +"change the exit status." + +#: src/elfcmp.c:59 +msgid "Control options:" +msgstr "Control options:" + +#: src/elfcmp.c:61 +msgid "Output all differences, not just the first" +msgstr "Output all differences, not just the first" + +#: src/elfcmp.c:62 +msgid "" +"Control treatment of gaps in loadable segments [ignore|match] (default: " +"ignore)" +msgstr "" +"Control treatment of gaps in loadable segments [ignore|match] (default: " +"ignore)" + +#: src/elfcmp.c:64 +msgid "Ignore permutation of buckets in SHT_HASH section" +msgstr "Ignore permutation of buckets in SHT_HASH section" + +#: src/elfcmp.c:66 +msgid "Ignore differences in build ID" +msgstr "Ignore differences in build ID" + +#: src/elfcmp.c:67 +msgid "Output nothing; yield exit status only" +msgstr "Output nothing; yield exit status only" + +#. Short description of program. +#: src/elfcmp.c:74 +msgid "Compare relevant parts of two ELF files for equality." +msgstr "Compare relevant parts of two ELF files for equality." + +#. Strings for arguments in help texts. +#: src/elfcmp.c:78 +msgid "FILE1 FILE2" +msgstr "FILE1 FILE2" + +#: src/elfcmp.c:140 +msgid "Invalid number of parameters.\n" +msgstr "Invalid number of parameters.\n" + +#: src/elfcmp.c:171 src/elfcmp.c:176 +#, c-format +msgid "cannot get ELF header of '%s': %s" +msgstr "cannot get ELF header of '%s': %s" + +#: src/elfcmp.c:202 +#, c-format +msgid "%s %s diff: ELF header" +msgstr "%s %s diff: ELF header" + +#: src/elfcmp.c:209 src/elfcmp.c:212 +#, c-format +msgid "cannot get section count of '%s': %s" +msgstr "cannot get section count of '%s': %s" + +#: src/elfcmp.c:217 +#, c-format +msgid "%s %s diff: section count" +msgstr "%s %s diff: section count" + +#: src/elfcmp.c:224 src/elfcmp.c:227 +#, c-format +msgid "cannot get program header count of '%s': %s" +msgstr "cannot get program header count of '%s': %s" + +#: src/elfcmp.c:232 +#, c-format +msgid "%s %s diff: program header count" +msgstr "%s %s diff: program header count" + +#: src/elfcmp.c:240 src/elfcmp.c:243 +#, c-format +msgid "cannot get hdrstrndx of '%s': %s" +msgstr "cannot get hdrstrndx of '%s': %s" + +#: src/elfcmp.c:248 +#, c-format +msgid "%s %s diff: shdr string index" +msgstr "%s %s diff: shdr string index" + +#: src/elfcmp.c:306 +#, c-format +msgid "%s %s differ: section [%zu], [%zu] name" +msgstr "%s %s differ: section [%zu], [%zu] name" + +#: src/elfcmp.c:329 +#, c-format +msgid "%s %s differ: section [%zu] '%s' header" +msgstr "%s %s differ: section [%zu] ‘%s’ header" + +#: src/elfcmp.c:337 src/elfcmp.c:343 +#, c-format +msgid "cannot get content of section %zu in '%s': %s" +msgstr "cannot get content of section %zu in '%s': %s" + +#: src/elfcmp.c:352 +#, c-format +msgid "symbol table [%zu] in '%s' has zero sh_entsize" +msgstr "symbol table [%zu] in ‘%s’ has zero sh_entsize" + +#: src/elfcmp.c:364 src/elfcmp.c:370 +#, c-format +msgid "cannot get symbol in '%s': %s" +msgstr "cannot get symbol in '%s': %s" + +#: src/elfcmp.c:392 +#, c-format +msgid "%s %s differ: symbol table [%zu]" +msgstr "%s %s differ: symbol table [%zu]" + +#: src/elfcmp.c:395 +#, c-format +msgid "%s %s differ: symbol table [%zu,%zu]" +msgstr "%s %s differ: symbol table [%zu,%zu]" + +#: src/elfcmp.c:442 src/elfcmp.c:512 +#, c-format +msgid "%s %s differ: section [%zu] '%s' number of notes" +msgstr "%s %s differ: section [%zu] ‘%s’ number of notes" + +#: src/elfcmp.c:450 +#, c-format +msgid "cannot read note section [%zu] '%s' in '%s': %s" +msgstr "cannot read note section [%zu] ‘%s’ in '%s': %s" + +#: src/elfcmp.c:461 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note name" +msgstr "%s %s differ: section [%zu] ‘%s’ note name" + +#: src/elfcmp.c:469 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note '%s' type" +msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ type" + +#: src/elfcmp.c:484 +#, c-format +msgid "%s %s differ: build ID length" +msgstr "%s %s differ: build ID length" + +#: src/elfcmp.c:492 +#, c-format +msgid "%s %s differ: build ID content" +msgstr "%s %s differ: build ID content" + +#: src/elfcmp.c:501 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note '%s' content" +msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ content" + +#: src/elfcmp.c:542 +#, c-format +msgid "%s %s differ: section [%zu] '%s' content" +msgstr "%s %s differ: section [%zu] ‘%s’ content" + +#: src/elfcmp.c:546 +#, c-format +msgid "%s %s differ: section [%zu,%zu] '%s' content" +msgstr "%s %s differ: section [%zu,%zu] ‘%s’ content" + +#: src/elfcmp.c:561 +#, c-format +msgid "%s %s differ: unequal amount of important sections" +msgstr "%s %s differ: unequal amount of important sections" + +#: src/elfcmp.c:594 src/elfcmp.c:599 +#, c-format +msgid "cannot load data of '%s': %s" +msgstr "cannot load data of '%s': %s" + +#: src/elfcmp.c:618 src/elfcmp.c:624 +#, c-format +msgid "cannot get program header entry %d of '%s': %s" +msgstr "cannot get program header entry %d of '%s': %s" + +#: src/elfcmp.c:630 +#, c-format +msgid "%s %s differ: program header %d" +msgstr "%s %s differ: program header %d" + +#: src/elfcmp.c:654 +#, c-format +msgid "%s %s differ: gap" +msgstr "%s %s differ: gap" + +#: src/elfcmp.c:705 +#, c-format +msgid "Invalid value '%s' for --gaps parameter." +msgstr "Invalid value ‘%s’ for --gaps parameter." + +#: src/elfcmp.c:733 src/findtextrel.c:194 src/nm.c:363 src/ranlib.c:140 +#: src/size.c:271 src/strings.c:184 src/strip.c:1040 src/strip.c:1077 +#: src/unstrip.c:2194 src/unstrip.c:2223 +#, c-format +msgid "cannot open '%s'" +msgstr "cannot open ‘%s’" + +#: src/elfcmp.c:737 src/findtextrel.c:213 src/ranlib.c:157 +#, c-format +msgid "cannot create ELF descriptor for '%s': %s" +msgstr "cannot create ELF descriptor for '%s': %s" + +#: src/elfcmp.c:742 +#, c-format +msgid "cannot create EBL descriptor for '%s'" +msgstr "cannot create EBL descriptor for ‘%s’" + +#: src/elfcmp.c:760 src/findtextrel.c:384 +#, c-format +msgid "cannot get section header of section %zu: %s" +msgstr "cannot get section header of section %zu: %s" + +#: src/elfcmp.c:770 +#, c-format +msgid "cannot get content of section %zu: %s" +msgstr "cannot get content of section %zu: %s" + +#: src/elfcmp.c:780 src/elfcmp.c:794 +#, c-format +msgid "cannot get relocation: %s" +msgstr "cannot get relocation: %s" + +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 +#, c-format +msgid "-o option specified twice" +msgstr "-o option specified twice" + +#: src/elfcompress.c:135 +#, c-format +msgid "-t option specified twice" +msgstr "-t option specified twice" + +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "ZSTD support is not enabled" + +#: src/elfcompress.c:150 +#, c-format +msgid "unknown compression type '%s'" +msgstr "unknown compression type ‘%s’" + +#. We need at least one input file. +#: src/elfcompress.c:162 src/elfcompress.c:1447 +#, c-format +msgid "No input file given" +msgstr "No input file given" + +#: src/elfcompress.c:168 src/elfcompress.c:1451 +#, c-format +msgid "Only one input file allowed together with '-o'" +msgstr "Only one input file allowed together with ‘-o’" + +#: src/elfcompress.c:1408 +msgid "Place (de)compressed output into FILE" +msgstr "Place (de)compressed output into FILE" + +#: src/elfcompress.c:1411 +msgid "" +"What type of compression to apply. TYPE can be 'none' (decompress), " +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" +msgstr "" +"What type of compression to apply. TYPE can be ‘none’ (decompress), " +"‘zlib’ (ELF ZLIB compression, the default, ‘zlib-gabi’ is an " +"alias), ‘zlib-gnu’ (.zdebug GNU style compression, ‘gnu’ is an " +"alias) or ‘zstd’ (ELF ZSTD compression)" + +#: src/elfcompress.c:1415 +msgid "" +"SECTION name to (de)compress, SECTION is an extended wildcard pattern " +"(defaults to '.?(z)debug*')" +msgstr "" +"SECTION name to (de)compress, SECTION is an extended wildcard pattern " +"(defaults to '.?(z)debug*')" + +#: src/elfcompress.c:1418 +msgid "Print a message for each section being (de)compressed" +msgstr "Print a message for each section being (de)compressed" + +#: src/elfcompress.c:1421 +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 "" +"Force compression of section even if it would become larger or update/" +"rewrite the file even if no section would be (de)compressed" + +#: src/elfcompress.c:1424 src/strip.c:92 +msgid "Relax a few rules to handle slightly broken ELF files" +msgstr "Relax a few rules to handle slightly broken ELF files" + +#: src/elfcompress.c:1427 +msgid "Be silent when a section cannot be compressed" +msgstr "Be silent when a section cannot be compressed" + +#: src/elfcompress.c:1437 +msgid "Compress or decompress sections in an ELF file." +msgstr "Compress or decompress sections in an ELF file." + +#: src/elflint.c:63 +msgid "Be extremely strict, flag level 2 features." +msgstr "Be extremely strict, flag level 2 features." + +#: src/elflint.c:64 +msgid "Do not print anything if successful" +msgstr "Do not print anything if successful" + +#: src/elflint.c:65 +msgid "Binary is a separate debuginfo file" +msgstr "Binary is a separate debuginfo file" + +#: src/elflint.c:67 +msgid "" +"Binary has been created with GNU ld and is therefore known to be broken in " +"certain ways" +msgstr "" +"Binary has been created with GNU ld and is therefore known to be broken in " +"certain ways" + +#. Short description of program. +#: src/elflint.c:73 +msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." +msgstr "Pedantic checking of ELF files compliance with gABI/psABI spec." + +#: src/elflint.c:154 src/readelf.c:413 +#, c-format +msgid "cannot open input file '%s'" +msgstr "cannot open input file ‘%s’" + +#: src/elflint.c:161 +#, c-format +msgid "cannot generate Elf descriptor for '%s': %s\n" +msgstr "cannot generate Elf descriptor for '%s': %s\n" + +#: src/elflint.c:180 +#, c-format +msgid "error while closing Elf descriptor: %s\n" +msgstr "error while closing Elf descriptor: %s\n" + +#: src/elflint.c:184 +msgid "No errors" +msgstr "No errors" + +#: src/elflint.c:219 src/readelf.c:625 +msgid "Missing file name.\n" +msgstr "Missing file name.\n" + +#: src/elflint.c:284 +#, c-format +msgid " error while freeing sub-ELF descriptor: %s\n" +msgstr " error while freeing sub-ELF descriptor: %s\n" + +#. We cannot do anything. +#: src/elflint.c:292 +#, c-format +msgid "Not an ELF file - it has the wrong magic bytes at the start\n" +msgstr "Not an ELF file - it has the wrong magic bytes at the start\n" + +#: src/elflint.c:358 +#, c-format +msgid "e_ident[%d] == %d is no known class\n" +msgstr "e_ident[%d] == %d is no known class\n" + +#: src/elflint.c:363 +#, c-format +msgid "e_ident[%d] == %d is no known data encoding\n" +msgstr "e_ident[%d] == %d is no known data encoding\n" + +#: src/elflint.c:367 +#, c-format +msgid "unknown ELF header version number e_ident[%d] == %d\n" +msgstr "unknown ELF header version number e_ident[%d] == %d\n" + +#: src/elflint.c:375 +#, c-format +msgid "unsupported OS ABI e_ident[%d] == '%s'\n" +msgstr "unsupported OS ABI e_ident[%d] == ‘%s’\n" + +#: src/elflint.c:381 +#, c-format +msgid "unsupported ABI version e_ident[%d] == %d\n" +msgstr "unsupported ABI version e_ident[%d] == %d\n" + +#: src/elflint.c:386 +#, c-format +msgid "e_ident[%zu] is not zero\n" +msgstr "e_ident[%zu] is not zero\n" + +#: src/elflint.c:391 +#, c-format +msgid "unknown object file type %d\n" +msgstr "unknown object file type %d\n" + +#: src/elflint.c:398 +#, c-format +msgid "unknown machine type %d\n" +msgstr "unknown machine type %d\n" + +#: src/elflint.c:402 +#, c-format +msgid "unknown object file version\n" +msgstr "unknown object file version\n" + +#: src/elflint.c:408 +#, c-format +msgid "invalid program header offset\n" +msgstr "invalid program header offset\n" + +#: src/elflint.c:410 +#, c-format +msgid "executables and DSOs cannot have zero program header offset\n" +msgstr "executables and DSOs cannot have zero program header offset\n" + +#: src/elflint.c:414 +#, c-format +msgid "invalid number of program header entries\n" +msgstr "invalid number of program header entries\n" + +#: src/elflint.c:422 +#, c-format +msgid "invalid section header table offset\n" +msgstr "invalid section header table offset\n" + +#: src/elflint.c:425 +#, c-format +msgid "section header table must be present\n" +msgstr "section header table must be present\n" + +#: src/elflint.c:439 +#, c-format +msgid "invalid number of section header table entries\n" +msgstr "invalid number of section header table entries\n" + +#: src/elflint.c:456 +#, c-format +msgid "invalid section header index\n" +msgstr "invalid section header index\n" + +#: src/elflint.c:474 +#, c-format +msgid "Can only check %u headers, shnum was %u\n" +msgstr "Can only check %u headers, shnum was %u\n" + +#: src/elflint.c:488 +#, c-format +msgid "invalid number of program header table entries\n" +msgstr "invalid number of program header table entries\n" + +#: src/elflint.c:505 +#, c-format +msgid "Can only check %u headers, phnum was %u\n" +msgstr "Can only check %u headers, phnum was %u\n" + +#: src/elflint.c:510 +#, c-format +msgid "invalid machine flags: %s\n" +msgstr "invalid machine flags: %s\n" + +#: src/elflint.c:517 src/elflint.c:534 +#, c-format +msgid "invalid ELF header size: %hd\n" +msgstr "invalid ELF header size: %hd\n" + +#: src/elflint.c:520 src/elflint.c:537 +#, c-format +msgid "invalid program header size: %hd\n" +msgstr "invalid program header size: %hd\n" + +#: src/elflint.c:523 src/elflint.c:540 +#, c-format +msgid "invalid program header position or size\n" +msgstr "invalid program header position or size\n" + +#: src/elflint.c:526 src/elflint.c:543 +#, c-format +msgid "invalid section header size: %hd\n" +msgstr "invalid section header size: %hd\n" + +#: src/elflint.c:529 src/elflint.c:546 +#, c-format +msgid "invalid section header position or size\n" +msgstr "invalid section header position or size\n" + +#: src/elflint.c:591 +#, c-format +msgid "" +"section [%2d] '%s': section with SHF_GROUP flag set not part of a section " +"group\n" +msgstr "" +"section [%2d] '%s': section with SHF_GROUP flag set not part of a section " +"group\n" + +#: src/elflint.c:595 +#, c-format +msgid "" +"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" +msgstr "" +"section [%2d] '%s': section group [%2zu] ‘%s’ does not precede group " +"member\n" + +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 +#, c-format +msgid "section [%2d] '%s': cannot get section data\n" +msgstr "section [%2d] '%s': cannot get section data\n" + +#: src/elflint.c:624 src/elflint.c:1699 +#, c-format +msgid "" +"section [%2d] '%s': referenced as string table for section [%2d] '%s' but " +"type is not SHT_STRTAB\n" +msgstr "" +"section [%2d] '%s': referenced as string table for section [%2d] ‘%s’ " +"but type is not SHT_STRTAB\n" + +#: src/elflint.c:647 +#, c-format +msgid "" +"section [%2d] '%s': symbol table cannot have more than one extended index " +"section\n" +msgstr "" +"section [%2d] '%s': symbol table cannot have more than one extended index " +"section\n" + +#: src/elflint.c:659 +#, c-format +msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" +msgstr "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" + +#: src/elflint.c:663 +#, c-format +msgid "" +"section [%2u] '%s': number of local entries in 'st_info' larger than table " +"size\n" +msgstr "" +"section [%2u] '%s': number of local entries in ‘st_info’ larger than " +"table size\n" + +#: src/elflint.c:672 +#, c-format +msgid "section [%2d] '%s': cannot get symbol %d: %s\n" +msgstr "section [%2d] '%s': cannot get symbol %d: %s\n" + +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 +#, c-format +msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" +msgstr "section [%2d] '%s': ‘%s’ in zeroth entry not zero\n" + +#: src/elflint.c:695 +#, c-format +msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" +msgstr "section [%2d] '%s': XINDEX for zeroth entry not zero\n" + +#: src/elflint.c:705 +#, c-format +msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" +msgstr "section [%2d] '%s': cannot get symbol %zu: %s\n" + +#: src/elflint.c:714 +#, c-format +msgid "section [%2d] '%s': symbol %zu: invalid name value\n" +msgstr "section [%2d] '%s': symbol %zu: invalid name value\n" + +#: src/elflint.c:729 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): too large section index but no extended " +"section index section\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): too large section index but no extended " +"section index section\n" + +#: src/elflint.c:735 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " +"in st_shndx (%)\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " +"in st_shndx (%)\n" + +#. || sym->st_shndx > SHN_HIRESERVE always false +#: src/elflint.c:747 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" +msgstr "section [%2d] '%s': symbol %zu (%s): invalid section index\n" + +#: src/elflint.c:755 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" +msgstr "section [%2d] '%s': symbol %zu (%s): unknown type\n" + +#: src/elflint.c:761 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" +msgstr "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" + +#: src/elflint.c:766 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" + +#: src/elflint.c:774 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " +"files\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " +"files\n" + +#: src/elflint.c:778 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" + +#: src/elflint.c:782 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" + +#: src/elflint.c:833 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n" +msgstr "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n" + +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " +"section [%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " +"section [%2d] ‘%s’\n" + +#: src/elflint.c:848 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " +"have SHF_TLS flag set\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] ‘%s’ " +"does not have SHF_TLS flag set\n" + +#: src/elflint.c:858 src/elflint.c:906 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " +"section [%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " +"section [%2d] ‘%s’\n" + +#: src/elflint.c:885 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " +"entry\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " +"entry\n" + +#: src/elflint.c:891 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " +"header entry\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " +"header entry\n" + +#: src/elflint.c:899 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " +"[%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " +"[%2d] ‘%s’\n" + +#: src/elflint.c:926 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " +"sh_info\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " +"sh_info\n" + +#: src/elflint.c:933 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " +"described in sh_info\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " +"described in sh_info\n" + +#: src/elflint.c:940 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" +msgstr "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" + +#: src/elflint.c:990 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " +"[%2d]\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " +"[%2d]\n" + +#: src/elflint.c:997 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " +"'%s'\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to 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. +#: src/elflint.c:1013 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " +"match %s section address %#\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " +"match %s section address %#\n" + +#: src/elflint.c:1020 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " +"match %s section size %\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " +"match %s section size %\n" + +#: src/elflint.c:1028 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " +"section\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " +"section\n" + +#: src/elflint.c:1044 +#, c-format +msgid "" +"section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " +"segment address %#\n" +msgstr "" +"section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " +"segment address %#\n" + +#: src/elflint.c:1051 +#, c-format +msgid "" +"section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " +"segment size %\n" +msgstr "" +"section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " +"segment size %\n" + +#: src/elflint.c:1064 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" +"default visibility\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" +"default visibility\n" + +#: src/elflint.c:1068 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n" +msgstr "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n" + +#: src/elflint.c:1106 +#, c-format +msgid "section [%2d] '%s': cannot get section data.\n" +msgstr "section [%2d] '%s': cannot get section data.\n" + +#: src/elflint.c:1122 +#, c-format +msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" +msgstr "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" + +#: src/elflint.c:1133 src/elflint.c:1186 +#, c-format +msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" +msgstr "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" + +#: src/elflint.c:1158 src/elflint.c:1211 +#, c-format +msgid "" +"section [%2d] '%s': relative relocations after index %d as specified by " +"DT_RELCOUNT\n" +msgstr "" +"section [%2d] '%s': relative relocations after index %d as specified by " +"DT_RELCOUNT\n" + +#: src/elflint.c:1164 src/elflint.c:1217 +#, c-format +msgid "" +"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " +"specified %d relative relocations\n" +msgstr "" +"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " +"specified %d relative relocations\n" + +#: src/elflint.c:1176 +#, c-format +msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" +msgstr "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" + +#: src/elflint.c:1259 +#, c-format +msgid "section [%2d] '%s': invalid destination section index\n" +msgstr "section [%2d] '%s': invalid destination section index\n" + +#: src/elflint.c:1271 +#, c-format +msgid "section [%2d] '%s': invalid destination section type\n" +msgstr "section [%2d] '%s': invalid destination section type\n" + +#: src/elflint.c:1279 +#, c-format +msgid "section [%2d] '%s': sh_info should be zero\n" +msgstr "section [%2d] '%s': sh_info should be zero\n" + +#: src/elflint.c:1287 +#, c-format +msgid "" +"section [%2d] '%s': no relocations for merge-able string sections possible\n" +msgstr "" +"section [%2d] '%s': no relocations for merge-able string sections possible\n" + +#: src/elflint.c:1365 +#, c-format +msgid "text relocation flag set but there is no read-only segment\n" +msgstr "text relocation flag set but there is no read-only segment\n" + +#: src/elflint.c:1392 +#, c-format +msgid "section [%2d] '%s': relocation %zu: invalid type\n" +msgstr "section [%2d] '%s': relocation %zu: invalid type\n" + +#: src/elflint.c:1400 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: relocation type invalid for the file " +"type\n" +msgstr "" +"section [%2d] '%s': relocation %zu: relocation type invalid for the file " +"type\n" + +#: src/elflint.c:1408 +#, c-format +msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" +msgstr "section [%2d] '%s': relocation %zu: invalid symbol index\n" + +#: src/elflint.c:1426 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " +"be used with %s\n" +msgstr "" +"section [%2d] '%s': relocation %zu: only symbol " +"‘_GLOBAL_OFFSET_TABLE_’ can be used with %s\n" + +#: src/elflint.c:1443 +#, c-format +msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" +msgstr "section [%2d] '%s': relocation %zu: offset out of bounds\n" + +#: src/elflint.c:1458 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: copy relocation against symbol of type " +"%s\n" +msgstr "" +"section [%2d] '%s': relocation %zu: copy relocation against symbol of type " +"%s\n" + +#: src/elflint.c:1479 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: read-only section modified but text " +"relocation flag not set\n" +msgstr "" +"section [%2d] '%s': relocation %zu: read-only section modified but text " +"relocation flag not set\n" + +#: src/elflint.c:1494 +#, c-format +msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n" +msgstr "section [%2d] '%s': relocations are against loaded and unloaded data\n" + +#: src/elflint.c:1534 src/elflint.c:1585 +#, c-format +msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" +msgstr "section [%2d] '%s': cannot get relocation %zu: %s\n" + +#: src/elflint.c:1687 +#, c-format +msgid "more than one dynamic section present\n" +msgstr "more than one dynamic section present\n" + +#: src/elflint.c:1705 +#, c-format +msgid "" +"section [%2d]: referenced as string table for section [%2d] '%s' but section " +"link value is invalid\n" +msgstr "" +"section [%2d]: referenced as string table for section [%2d] ‘%s’ but " +"section link value is invalid\n" + +#: src/elflint.c:1713 +#, c-format +msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" +msgstr "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" + +#: src/elflint.c:1718 src/elflint.c:2008 +#, c-format +msgid "section [%2d] '%s': sh_info not zero\n" +msgstr "section [%2d] '%s': sh_info not zero\n" + +#: src/elflint.c:1728 +#, c-format +msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" +msgstr "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" + +#: src/elflint.c:1736 +#, c-format +msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" +msgstr "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" + +#: src/elflint.c:1743 +#, c-format +msgid "section [%2d] '%s': entry %zu: unknown tag\n" +msgstr "section [%2d] '%s': entry %zu: unknown tag\n" + +#: src/elflint.c:1754 +#, c-format +msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" +msgstr "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" + +#: src/elflint.c:1764 +#, c-format +msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" +msgstr "section [%2d] '%s': entry %zu: level 2 tag %s used\n" + +#: src/elflint.c:1782 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" +msgstr "" +"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" + +#: src/elflint.c:1795 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: pointer does not match address of section " +"[%2d] '%s' referenced by sh_link\n" +msgstr "" +"section [%2d] '%s': entry %zu: pointer does not match address of section " +"[%2d] ‘%s’ referenced by sh_link\n" + +#: src/elflint.c:1839 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" +msgstr "" +"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" + +#: src/elflint.c:1854 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: %s value must be valid offset in section " +"[%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': entry %zu: %s value must be valid offset in section " +"[%2d] ‘%s’\n" + +#: src/elflint.c:1874 src/elflint.c:1902 +#, c-format +msgid "section [%2d] '%s': contains %s entry but not %s\n" +msgstr "section [%2d] '%s': contains %s entry but not %s\n" + +#: src/elflint.c:1886 +#, c-format +msgid "section [%2d] '%s': mandatory tag %s not present\n" +msgstr "section [%2d] '%s': mandatory tag %s not present\n" + +#: src/elflint.c:1895 +#, c-format +msgid "section [%2d] '%s': no hash section present\n" +msgstr "section [%2d] '%s': no hash section present\n" + +#: src/elflint.c:1910 src/elflint.c:1917 +#, c-format +msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n" +msgstr "section [%2d] '%s': not all of %s, %s, and %s are present\n" + +#: src/elflint.c:1927 src/elflint.c:1931 +#, c-format +msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" +msgstr "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" + +#: src/elflint.c:1937 +#, c-format +msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" +msgstr "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" + +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 +#, c-format +msgid "section [%2d] '%s': %s tag missing in prelinked executable\n" +msgstr "section [%2d] '%s': %s tag missing in prelinked executable\n" + +#: src/elflint.c:1972 +#, c-format +msgid "" +"section [%2d] '%s': only relocatable files can have extended section index\n" +msgstr "" +"section [%2d] '%s': only relocatable files can have extended section index\n" + +#: src/elflint.c:1982 +#, c-format +msgid "" +"section [%2d] '%s': extended section index section not for symbol table\n" +msgstr "" +"section [%2d] '%s': extended section index section not for symbol table\n" + +#: src/elflint.c:1986 +#, c-format +msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" +msgstr "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" + +#: src/elflint.c:1991 +#, c-format +msgid "cannot get data for symbol section\n" +msgstr "cannot get data for symbol section\n" + +#: src/elflint.c:1994 +#, c-format +msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" +msgstr "section [%2d] '%s': entry size does not match Elf32_Word\n" + +#: src/elflint.c:2003 +#, c-format +msgid "section [%2d] '%s': extended index table too small for symbol table\n" +msgstr "section [%2d] '%s': extended index table too small for symbol table\n" + +#: src/elflint.c:2018 +#, c-format +msgid "" +"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " +"same symbol table\n" +msgstr "" +"section [%2d] '%s': extended section index in section [%2zu] ‘%s’ " +"refers to same symbol table\n" + +#: src/elflint.c:2036 +#, c-format +msgid "symbol 0 should have zero extended section index\n" +msgstr "symbol 0 should have zero extended section index\n" + +#: src/elflint.c:2048 +#, c-format +msgid "cannot get data for symbol %zu\n" +msgstr "cannot get data for symbol %zu\n" + +#: src/elflint.c:2053 +#, c-format +msgid "extended section index is % but symbol index is not XINDEX\n" +msgstr "extended section index is % but symbol index is not XINDEX\n" + +#: src/elflint.c:2070 src/elflint.c:2127 +#, c-format +msgid "" +"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" +msgstr "" +"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" + +#: src/elflint.c:2084 src/elflint.c:2141 +#, c-format +msgid "section [%2d] '%s': chain array too large\n" +msgstr "section [%2d] '%s': chain array too large\n" + +#: src/elflint.c:2098 src/elflint.c:2155 +#, c-format +msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" +msgstr "section [%2d] '%s': hash bucket reference %zu out of bounds\n" + +#: src/elflint.c:2108 +#, c-format +msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" +msgstr "section [%2d] '%s': hash chain reference %zu out of bounds\n" + +#: src/elflint.c:2165 +#, c-format +msgid "section [%2d] '%s': hash chain reference % out of bounds\n" +msgstr "section [%2d] '%s': hash chain reference % out of bounds\n" + +#: src/elflint.c:2178 +#, c-format +msgid "section [%2d] '%s': not enough data\n" +msgstr "section [%2d] '%s': not enough data\n" + +#: src/elflint.c:2190 +#, c-format +msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n" +msgstr "section [%2d] '%s': bitmask size zero or not power of 2: %u\n" + +#: src/elflint.c:2206 +#, c-format +msgid "" +"section [%2d] '%s': hash table section is too small (is %ld, expected at " +"least %ld)\n" +msgstr "" +"section [%2d] '%s': hash table section is too small (is %ld, expected at " +"least %ld)\n" + +#: src/elflint.c:2215 +#, c-format +msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n" +msgstr "section [%2d] '%s': 2nd hash function shift too big: %u\n" + +#: src/elflint.c:2249 +#, c-format +msgid "" +"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" +msgstr "" +"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" + +#: src/elflint.c:2270 +#, c-format +msgid "" +"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " +"undefined\n" +msgstr "" +"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " +"undefined\n" + +#: src/elflint.c:2283 +#, c-format +msgid "" +"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" +msgstr "" +"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" + +#: src/elflint.c:2292 +#, c-format +msgid "" +"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" +msgstr "" +"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" + +#: src/elflint.c:2322 +#, c-format +msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" +msgstr "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" + +#: src/elflint.c:2327 +#, c-format +msgid "" +"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" +msgstr "" +"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" + +#: src/elflint.c:2333 +#, c-format +msgid "section [%2d] '%s': bitmask does not match names in the hash table\n" +msgstr "section [%2d] '%s': bitmask does not match names in the hash table\n" + +#: src/elflint.c:2346 +#, c-format +msgid "section [%2d] '%s': relocatable files cannot have hash tables\n" +msgstr "section [%2d] '%s': relocatable files cannot have hash tables\n" + +#: src/elflint.c:2364 +#, c-format +msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" +msgstr "section [%2d] '%s': hash table not for dynamic symbol table\n" + +#: src/elflint.c:2368 +#, c-format +msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" +msgstr "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" + +#: src/elflint.c:2378 +#, c-format +msgid "section [%2d] '%s': hash table entry size incorrect\n" +msgstr "section [%2d] '%s': hash table entry size incorrect\n" + +#: src/elflint.c:2383 +#, c-format +msgid "section [%2d] '%s': not marked to be allocated\n" +msgstr "section [%2d] '%s': not marked to be allocated\n" + +#: src/elflint.c:2388 +#, c-format +msgid "" +"section [%2d] '%s': hash table has not even room for initial administrative " +"entries\n" +msgstr "" +"section [%2d] '%s': hash table has not even room for initial administrative " +"entries\n" + +#: src/elflint.c:2437 +#, c-format +msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n" +msgstr "" +"sh_link in hash sections [%2zu] ‘%s’ and [%2zu] ‘%s’ not " +"identical\n" + +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 +#, c-format +msgid "hash section [%2zu] '%s' does not contain enough data\n" +msgstr "hash section [%2zu] ‘%s’ does not contain enough data\n" + +#: src/elflint.c:2482 +#, c-format +msgid "hash section [%2zu] '%s' has zero bit mask words\n" +msgstr "hash section [%2zu] ‘%s’ has zero bit mask words\n" + +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 +#, c-format +msgid "hash section [%2zu] '%s' uses too much data\n" +msgstr "hash section [%2zu] ‘%s’ uses too much data\n" + +#: src/elflint.c:2508 +#, c-format +msgid "" +"hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " +"%, nentries: %\n" +msgstr "" +"hash section [%2zu] ‘%s’ invalid symbol index % (max_nsyms: " +"%, nentries: %\n" + +#: src/elflint.c:2595 +#, c-format +msgid "hash section [%2zu] '%s' invalid sh_entsize\n" +msgstr "hash section [%2zu] ‘%s’ invalid sh_entsize\n" + +#: src/elflint.c:2605 src/elflint.c:2609 +#, c-format +msgid "section [%2zu] '%s': reference to symbol index 0\n" +msgstr "section [%2zu] '%s': reference to symbol index 0\n" + +#: src/elflint.c:2616 +#, c-format +msgid "" +"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash " +"table in [%2zu] '%s'\n" +msgstr "" +"symbol %d referenced in new hash table in [%2zu] ‘%s’ but not in old " +"hash table in [%2zu] ‘%s’\n" + +#: src/elflint.c:2628 +#, c-format +msgid "" +"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash " +"table in [%2zu] '%s'\n" +msgstr "" +"symbol %d referenced in old hash table in [%2zu] ‘%s’ but not in new " +"hash table in [%2zu] ‘%s’\n" + +#: src/elflint.c:2644 +#, c-format +msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" +msgstr "section [%2d] '%s': nonzero sh_%s for NULL section\n" + +#: src/elflint.c:2664 +#, c-format +msgid "" +"section [%2d] '%s': section groups only allowed in relocatable object files\n" +msgstr "" +"section [%2d] '%s': section groups only allowed in relocatable object files\n" + +#: src/elflint.c:2675 +#, c-format +msgid "section [%2d] '%s': cannot get symbol table: %s\n" +msgstr "section [%2d] '%s': cannot get symbol table: %s\n" + +#: src/elflint.c:2680 +#, c-format +msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n" +msgstr "section [%2d] '%s': section reference in sh_link is no symbol table\n" + +#: src/elflint.c:2686 +#, c-format +msgid "section [%2d] '%s': invalid symbol index in sh_info\n" +msgstr "section [%2d] '%s': invalid symbol index in sh_info\n" + +#: src/elflint.c:2691 +#, c-format +msgid "section [%2d] '%s': sh_flags not zero\n" +msgstr "section [%2d] '%s': sh_flags not zero\n" + +#: src/elflint.c:2698 +#, c-format +msgid "section [%2d] '%s': cannot get symbol for signature\n" +msgstr "section [%2d] '%s': cannot get symbol for signature\n" + +#: src/elflint.c:2702 +#, c-format +msgid "section [%2d] '%s': cannot get symbol name for signature\n" +msgstr "section [%2d] '%s': cannot get symbol name for signature\n" + +#: src/elflint.c:2707 +#, c-format +msgid "section [%2d] '%s': signature symbol cannot be empty string\n" +msgstr "section [%2d] '%s': signature symbol cannot be empty string\n" + +#: src/elflint.c:2713 +#, c-format +msgid "section [%2d] '%s': sh_flags not set correctly\n" +msgstr "section [%2d] '%s': sh_flags not set correctly\n" + +#: src/elflint.c:2719 +#, c-format +msgid "section [%2d] '%s': cannot get data: %s\n" +msgstr "section [%2d] '%s': cannot get data: %s\n" + +#: src/elflint.c:2728 +#, c-format +msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" +msgstr "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" + +#: src/elflint.c:2734 +#, c-format +msgid "section [%2d] '%s': section group without flags word\n" +msgstr "section [%2d] '%s': section group without flags word\n" + +#: src/elflint.c:2742 +#, c-format +msgid "section [%2d] '%s': section group without member\n" +msgstr "section [%2d] '%s': section group without member\n" + +#: src/elflint.c:2746 +#, c-format +msgid "section [%2d] '%s': section group with only one member\n" +msgstr "section [%2d] '%s': section group with only one member\n" + +#: src/elflint.c:2757 +#, c-format +msgid "section [%2d] '%s': unknown section group flags\n" +msgstr "section [%2d] '%s': unknown section group flags\n" + +#: src/elflint.c:2769 +#, c-format +msgid "section [%2d] '%s': section index %zu out of range\n" +msgstr "section [%2d] '%s': section index %zu out of range\n" + +#: src/elflint.c:2778 +#, c-format +msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" +msgstr "section [%2d] '%s': cannot get section header for element %zu: %s\n" + +#: src/elflint.c:2785 +#, c-format +msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': section group contains another group [%2d] ‘%s’\n" + +#: src/elflint.c:2791 +#, c-format +msgid "" +"section [%2d] '%s': element %zu references section [%2d] '%s' without " +"SHF_GROUP flag set\n" +msgstr "" +"section [%2d] '%s': element %zu references section [%2d] ‘%s’ without " +"SHF_GROUP flag set\n" + +#: src/elflint.c:2798 +#, c-format +msgid "section [%2d] '%s' is contained in more than one section group\n" +msgstr "section [%2d] ‘%s’ is contained in more than one section group\n" + +#: src/elflint.c:2995 +#, c-format +msgid "" +"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no " +"dynamic symbol table\n" +msgstr "" +"section [%2d] ‘%s’ refers in sh_link to section [%2d] ‘%s’ which " +"is no dynamic symbol table\n" + +#: src/elflint.c:3007 +#, c-format +msgid "" +"section [%2d] '%s' has different number of entries than symbol table [%2d] " +"'%s'\n" +msgstr "" +"section [%2d] ‘%s’ has different number of entries than symbol table " +"[%2d] ‘%s’\n" + +#: src/elflint.c:3023 +#, c-format +msgid "section [%2d] '%s': symbol %d: cannot read version data\n" +msgstr "section [%2d] '%s': symbol %d: cannot read version data\n" + +#: src/elflint.c:3039 +#, c-format +msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n" +msgstr "section [%2d] '%s': symbol %d: local symbol with global scope\n" + +#: src/elflint.c:3047 +#, c-format +msgid "section [%2d] '%s': symbol %d: local symbol with version\n" +msgstr "section [%2d] '%s': symbol %d: local symbol with version\n" + +#: src/elflint.c:3061 +#, c-format +msgid "section [%2d] '%s': symbol %d: invalid version index %d\n" +msgstr "section [%2d] '%s': symbol %d: invalid version index %d\n" + +#: src/elflint.c:3066 +#, c-format +msgid "" +"section [%2d] '%s': symbol %d: version index %d is for defined version\n" +msgstr "" +"section [%2d] '%s': symbol %d: version index %d is for defined version\n" + +#: src/elflint.c:3076 +#, c-format +msgid "" +"section [%2d] '%s': symbol %d: version index %d is for requested version\n" +msgstr "" +"section [%2d] '%s': symbol %d: version index %d is for requested version\n" + +#: src/elflint.c:3129 +#, c-format +msgid "more than one version reference section present\n" +msgstr "more than one version reference section present\n" + +#: src/elflint.c:3137 src/elflint.c:3284 +#, c-format +msgid "section [%2d] '%s': sh_link does not link to string table\n" +msgstr "section [%2d] '%s': sh_link does not link to string table\n" + +#: src/elflint.c:3162 src/elflint.c:3338 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong version %d\n" +msgstr "section [%2d] '%s': entry %d has wrong version %d\n" + +#: src/elflint.c:3169 src/elflint.c:3345 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" +msgstr "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" + +#: src/elflint.c:3179 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid file reference\n" +msgstr "section [%2d] '%s': entry %d has invalid file reference\n" + +#: src/elflint.c:3187 +#, c-format +msgid "section [%2d] '%s': entry %d references unknown dependency\n" +msgstr "section [%2d] '%s': entry %d references unknown dependency\n" + +#: src/elflint.c:3199 +#, c-format +msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" +msgstr "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" + +#: src/elflint.c:3207 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " +"reference\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " +"reference\n" + +#: src/elflint.c:3216 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " +"%#x, expected %#x\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " +"%#x, expected %#x\n" + +#: src/elflint.c:3225 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " +"name '%s'\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " +"name ‘%s’\n" + +#: src/elflint.c:3236 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" + +#: src/elflint.c:3253 src/elflint.c:3429 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n" +msgstr "section [%2d] '%s': entry %d has invalid offset to next entry\n" + +#: src/elflint.c:3261 src/elflint.c:3437 +#, c-format +msgid "" +"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " +"there are more entries\n" +msgstr "" +"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " +"there are more entries\n" + +#: src/elflint.c:3276 +#, c-format +msgid "more than one version definition section present\n" +msgstr "more than one version definition section present\n" + +#: src/elflint.c:3323 +#, c-format +msgid "section [%2d] '%s': more than one BASE definition\n" +msgstr "section [%2d] '%s': more than one BASE definition\n" + +#: src/elflint.c:3327 +#, c-format +msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" +msgstr "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" + +#: src/elflint.c:3333 +#, c-format +msgid "section [%2d] '%s': entry %d has unknown flag\n" +msgstr "section [%2d] '%s': entry %d has unknown flag\n" + +#: src/elflint.c:3360 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid name reference\n" +msgstr "section [%2d] '%s': entry %d has invalid name reference\n" + +#: src/elflint.c:3367 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" +msgstr "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" + +#: src/elflint.c:3375 +#, c-format +msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n" +msgstr "section [%2d] '%s': entry %d has duplicate version name ‘%s’\n" + +#: src/elflint.c:3395 +#, c-format +msgid "" +"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" +msgstr "" +"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" + +#: src/elflint.c:3412 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" +msgstr "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" + +#: src/elflint.c:3445 +#, c-format +msgid "section [%2d] '%s': no BASE definition\n" +msgstr "section [%2d] '%s': no BASE definition\n" + +#: src/elflint.c:3461 +#, c-format +msgid "section [%2d] '%s': unknown parent version '%s'\n" +msgstr "section [%2d] '%s': unknown parent version ‘%s’\n" + +#: src/elflint.c:3486 +#, c-format +msgid "section [%2d] '%s': empty object attributes section\n" +msgstr "section [%2d] '%s': empty object attributes section\n" + +#: src/elflint.c:3502 +#, c-format +msgid "section [%2d] '%s': unrecognized attribute format\n" +msgstr "section [%2d] '%s': unrecognized attribute format\n" + +#: src/elflint.c:3513 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: zero length field in attribute section\n" +msgstr "" +"section [%2d] '%s': offset %zu: zero length field in attribute section\n" + +#: src/elflint.c:3522 +#, c-format +msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n" +msgstr "section [%2d] '%s': offset %zu: invalid length in attribute section\n" + +#: src/elflint.c:3534 +#, c-format +msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n" +msgstr "section [%2d] '%s': offset %zu: unterminated vendor name string\n" + +#: src/elflint.c:3551 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" +msgstr "" +"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" + +#: src/elflint.c:3560 +#, c-format +msgid "section [%2d] '%s': offset %zu: truncated attribute section\n" +msgstr "section [%2d] '%s': offset %zu: truncated attribute section\n" + +#: src/elflint.c:3569 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" +msgstr "" +"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" + +#: src/elflint.c:3584 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" +msgstr "" +"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" + +#. Tag_File +#: src/elflint.c:3595 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" +msgstr "" +"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" + +#: src/elflint.c:3616 +#, c-format +msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" +msgstr "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" + +#: src/elflint.c:3627 +#, c-format +msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n" +msgstr "section [%2d] '%s': offset %zu: unterminated string in attribute\n" + +#: src/elflint.c:3640 +#, c-format +msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" +msgstr "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" + +#: src/elflint.c:3644 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" +msgstr "" +"section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" + +#: src/elflint.c:3654 +#, c-format +msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n" +msgstr "section [%2d] '%s': offset %zu: vendor ‘%s’ unknown\n" + +#: src/elflint.c:3660 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" +msgstr "" +"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" + +#: src/elflint.c:3758 +#, c-format +msgid "cannot get section header of zeroth section\n" +msgstr "cannot get section header of zeroth section\n" + +#: src/elflint.c:3762 +#, c-format +msgid "zeroth section has nonzero name\n" +msgstr "zeroth section has nonzero name\n" + +#: src/elflint.c:3764 +#, c-format +msgid "zeroth section has nonzero type\n" +msgstr "zeroth section has nonzero type\n" + +#: src/elflint.c:3766 +#, c-format +msgid "zeroth section has nonzero flags\n" +msgstr "zeroth section has nonzero flags\n" + +#: src/elflint.c:3768 +#, c-format +msgid "zeroth section has nonzero address\n" +msgstr "zeroth section has nonzero address\n" + +#: src/elflint.c:3770 +#, c-format +msgid "zeroth section has nonzero offset\n" +msgstr "zeroth section has nonzero offset\n" + +#: src/elflint.c:3772 +#, c-format +msgid "zeroth section has nonzero align value\n" +msgstr "zeroth section has nonzero align value\n" + +#: src/elflint.c:3774 +#, c-format +msgid "zeroth section has nonzero entry size value\n" +msgstr "zeroth section has nonzero entry size value\n" + +#: src/elflint.c:3777 +#, c-format +msgid "" +"zeroth section has nonzero size value while ELF header has nonzero shnum " +"value\n" +msgstr "" +"zeroth section has nonzero size value while ELF header has nonzero shnum " +"value\n" + +#: src/elflint.c:3781 +#, c-format +msgid "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in shstrndx\n" +msgstr "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in shstrndx\n" + +#: src/elflint.c:3785 +#, c-format +msgid "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in phnum\n" +msgstr "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in phnum\n" + +#: src/elflint.c:3803 +#, c-format +msgid "cannot get section header for section [%2zu] '%s': %s\n" +msgstr "cannot get section header for section [%2zu] '%s': %s\n" + +#: src/elflint.c:3812 +#, c-format +msgid "section [%2zu]: invalid name\n" +msgstr "section [%2zu]: invalid name\n" + +#: src/elflint.c:3839 +#, c-format +msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" +msgstr "section [%2d] ‘%s’ has wrong type: expected %s, is %s\n" + +#: src/elflint.c:3856 +#, c-format +msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" +msgstr "section [%2zu] ‘%s’ has wrong flags: expected %s, is %s\n" + +#: src/elflint.c:3874 +#, c-format +msgid "" +"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" +msgstr "" +"section [%2zu] ‘%s’ has wrong flags: expected %s and possibly %s, is " +"%s\n" + +#: src/elflint.c:3891 +#, c-format +msgid "section [%2zu] '%s' present in object file\n" +msgstr "section [%2zu] ‘%s’ present in object file\n" + +#: src/elflint.c:3897 src/elflint.c:3929 +#, c-format +msgid "" +"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" +msgstr "" +"section [%2zu] ‘%s’ has SHF_ALLOC flag set but there is no loadable " +"segment\n" + +#: src/elflint.c:3902 src/elflint.c:3934 +#, c-format +msgid "" +"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " +"segments\n" +msgstr "" +"section [%2zu] ‘%s’ has SHF_ALLOC flag not set but there are loadable " +"segments\n" + +#: src/elflint.c:3910 +#, c-format +msgid "" +"section [%2zu] '%s' is extension section index table in non-object file\n" +msgstr "" +"section [%2zu] ‘%s’ is extension section index table in non-object " +"file\n" + +#: src/elflint.c:3953 +#, c-format +msgid "section [%2zu] '%s': size not multiple of entry size\n" +msgstr "section [%2zu] '%s': size not multiple of entry size\n" + +#: src/elflint.c:3958 +#, c-format +msgid "cannot get section header\n" +msgstr "cannot get section header\n" + +#: src/elflint.c:3968 +#, c-format +msgid "section [%2zu] '%s' has unsupported type %d\n" +msgstr "section [%2zu] ‘%s’ has unsupported type %d\n" + +#: src/elflint.c:3988 +#, c-format +msgid "" +"section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" +msgstr "" +"section [%2zu] ‘%s’ contains invalid processor-specific flag(s) " +"%#\n" + +#: src/elflint.c:3998 +#, c-format +msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" +msgstr "section [%2zu] ‘%s’ contains unknown flag(s) %#\n" + +#: src/elflint.c:4006 +#, c-format +msgid "section [%2zu] '%s': thread-local data sections address not zero\n" +msgstr "section [%2zu] '%s': thread-local data sections address not zero\n" + +#: src/elflint.c:4016 +#, c-format +msgid "section [%2zu] '%s': allocated section cannot be compressed\n" +msgstr "section [%2zu] '%s': allocated section cannot be compressed\n" + +#: src/elflint.c:4021 +#, c-format +msgid "section [%2zu] '%s': nobits section cannot be compressed\n" +msgstr "section [%2zu] '%s': nobits section cannot be compressed\n" + +#: src/elflint.c:4027 +#, c-format +msgid "" +"section [%2zu] '%s': compressed section with no compression header: %s\n" +msgstr "" +"section [%2zu] '%s': compressed section with no compression header: %s\n" + +#: src/elflint.c:4033 +#, c-format +msgid "section [%2zu] '%s': invalid section reference in link value\n" +msgstr "section [%2zu] '%s': invalid section reference in link value\n" + +#: src/elflint.c:4038 +#, c-format +msgid "section [%2zu] '%s': invalid section reference in info value\n" +msgstr "section [%2zu] '%s': invalid section reference in info value\n" + +#: src/elflint.c:4045 +#, c-format +msgid "section [%2zu] '%s': strings flag set without merge flag\n" +msgstr "section [%2zu] '%s': strings flag set without merge flag\n" + +#: src/elflint.c:4050 +#, c-format +msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" +msgstr "section [%2zu] '%s': merge flag set but entry size is zero\n" + +#: src/elflint.c:4069 +#, c-format +msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n" +msgstr "" +"section [%2zu] ‘%s’ has unexpected type %d for an executable section\n" + +#: src/elflint.c:4078 +#, c-format +msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n" +msgstr "section [%2zu] ‘%s’ must be of type NOBITS in debuginfo files\n" + +#: src/elflint.c:4085 +#, c-format +msgid "section [%2zu] '%s' is both executable and writable\n" +msgstr "section [%2zu] ‘%s’ is both executable and writable\n" + +#: src/elflint.c:4116 +#, c-format +msgid "" +"section [%2zu] '%s' not fully contained in segment of program header entry " +"%d\n" +msgstr "" +"section [%2zu] ‘%s’ not fully contained in segment of program header " +"entry %d\n" + +#: src/elflint.c:4126 +#, c-format +msgid "" +"section [%2zu] '%s' has type NOBITS but is read from the file in segment of " +"program header entry %d\n" +msgstr "" +"section [%2zu] ‘%s’ has type NOBITS but is read from the file in " +"segment of program header entry %d\n" + +#: src/elflint.c:4152 +#, 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 "" +"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" + +#: src/elflint.c:4163 +#, 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 "" +"section [%2zu] ‘%s’ has not type NOBITS but is not read from the file " +"in segment of program header entry %d\n" + +#: src/elflint.c:4174 +#, c-format +msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n" +msgstr "section [%2zu] ‘%s’ is executable in nonexecutable segment %d\n" + +#: src/elflint.c:4184 +#, c-format +msgid "section [%2zu] '%s' is writable in unwritable segment %d\n" +msgstr "section [%2zu] ‘%s’ is writable in unwritable segment %d\n" + +#: src/elflint.c:4194 +#, c-format +msgid "" +"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" +msgstr "" +"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" + +#: src/elflint.c:4200 +#, c-format +msgid "" +"section [%2zu] '%s': ELF header says this is the section header string table " +"but type is not SHT_TYPE\n" +msgstr "" +"section [%2zu] '%s': ELF header says this is the section header string table " +"but type is not SHT_TYPE\n" + +#: src/elflint.c:4208 +#, c-format +msgid "" +"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" +msgstr "" +"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" + +#: src/elflint.c:4263 +#, c-format +msgid "more than one version symbol table present\n" +msgstr "more than one version symbol table present\n" + +#: src/elflint.c:4286 +#, c-format +msgid "INTERP program header entry but no .interp section\n" +msgstr "INTERP program header entry but no .interp section\n" + +#: src/elflint.c:4297 +#, c-format +msgid "" +"loadable segment [%u] is executable but contains no executable sections\n" +msgstr "" +"loadable segment [%u] is executable but contains no executable sections\n" + +#: src/elflint.c:4303 +#, c-format +msgid "loadable segment [%u] is writable but contains no writable sections\n" +msgstr "loadable segment [%u] is writable but contains no writable sections\n" + +#: src/elflint.c:4314 +#, c-format +msgid "" +"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " +"exist\n" +msgstr "" +"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " +"exist\n" + +#: src/elflint.c:4327 +#, c-format +msgid "duplicate version index %d\n" +msgstr "duplicate version index %d\n" + +#: src/elflint.c:4341 +#, c-format +msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" +msgstr ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" + +#: src/elflint.c:4390 +#, c-format +msgid "phdr[%d]: unknown core file note type % at offset %\n" +msgstr "phdr[%d]: unknown core file note type % at offset %\n" + +#: src/elflint.c:4394 +#, c-format +msgid "" +"section [%2d] '%s': unknown core file note type % at offset %zu\n" +msgstr "" +"section [%2d] '%s': unknown core file note type % at offset %zu\n" + +#: src/elflint.c:4450 +#, c-format +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" +msgstr "" +"phdr[%d]: unknown object file note type % with owner name ‘%s’ " +"at offset %zu\n" + +#: src/elflint.c:4455 +#, c-format +msgid "" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" +msgstr "" +"section [%2d] '%s': unknown object file note type % with owner name " +"‘%s’ at offset %zu\n" + +#: src/elflint.c:4474 +#, c-format +msgid "phdr[%d]: no note entries defined for the type of file\n" +msgstr "phdr[%d]: no note entries defined for the type of file\n" + +#: src/elflint.c:4494 +#, c-format +msgid "phdr[%d]: cannot get content of note section: %s\n" +msgstr "phdr[%d]: cannot get content of note section: %s\n" + +#: src/elflint.c:4497 +#, c-format +msgid "phdr[%d]: extra % bytes after last note\n" +msgstr "phdr[%d]: extra % bytes after last note\n" + +#: src/elflint.c:4518 +#, c-format +msgid "section [%2d] '%s': no note entries defined for the type of file\n" +msgstr "section [%2d] '%s': no note entries defined for the type of file\n" + +#: src/elflint.c:4525 +#, c-format +msgid "section [%2d] '%s': cannot get content of note section\n" +msgstr "section [%2d] '%s': cannot get content of note section\n" + +#: src/elflint.c:4528 +#, c-format +msgid "section [%2d] '%s': extra % bytes after last note\n" +msgstr "section [%2d] '%s': extra % bytes after last note\n" + +#: src/elflint.c:4546 +#, c-format +msgid "" +"only executables, shared objects, and core files can have program headers\n" +msgstr "" +"only executables, shared objects, and core files can have program headers\n" + +#: src/elflint.c:4561 +#, c-format +msgid "cannot get program header entry %d: %s\n" +msgstr "cannot get program header entry %d: %s\n" + +#: src/elflint.c:4571 +#, c-format +msgid "program header entry %d: unknown program header entry type %#\n" +msgstr "" +"program header entry %d: unknown program header entry type %#\n" + +#: src/elflint.c:4582 +#, c-format +msgid "more than one INTERP entry in program header\n" +msgstr "more than one INTERP entry in program header\n" + +#: src/elflint.c:4590 +#, c-format +msgid "more than one TLS entry in program header\n" +msgstr "more than one TLS entry in program header\n" + +#: src/elflint.c:4597 +#, c-format +msgid "static executable cannot have dynamic sections\n" +msgstr "static executable cannot have dynamic sections\n" + +#: src/elflint.c:4611 +#, c-format +msgid "dynamic section reference in program header has wrong offset\n" +msgstr "dynamic section reference in program header has wrong offset\n" + +#: src/elflint.c:4614 +#, c-format +msgid "dynamic section size mismatch in program and section header\n" +msgstr "dynamic section size mismatch in program and section header\n" + +#: src/elflint.c:4624 +#, c-format +msgid "more than one GNU_RELRO entry in program header\n" +msgstr "more than one GNU_RELRO entry in program header\n" + +#: src/elflint.c:4645 +#, c-format +msgid "loadable segment GNU_RELRO applies to is not writable\n" +msgstr "loadable segment GNU_RELRO applies to is not writable\n" + +#: src/elflint.c:4656 +#, c-format +msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" +msgstr "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" + +#: src/elflint.c:4663 +#, c-format +msgid "" +"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" +msgstr "" +"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" + +#: src/elflint.c:4672 src/elflint.c:4695 +#, c-format +msgid "%s segment not contained in a loaded segment\n" +msgstr "%s segment not contained in a loaded segment\n" + +#: src/elflint.c:4701 +#, c-format +msgid "program header offset in ELF header and PHDR entry do not match" +msgstr "program header offset in ELF header and PHDR entry do not match" + +#: src/elflint.c:4728 +#, c-format +msgid "call frame search table reference in program header has wrong offset\n" +msgstr "call frame search table reference in program header has wrong offset\n" + +#: src/elflint.c:4731 +#, c-format +msgid "call frame search table size mismatch in program and section header\n" +msgstr "call frame search table size mismatch in program and section header\n" + +#: src/elflint.c:4744 +#, c-format +msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" +msgstr "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" + +#: src/elflint.c:4752 +#, c-format +msgid "call frame search table must be allocated\n" +msgstr "call frame search table must be allocated\n" + +#: src/elflint.c:4755 +#, c-format +msgid "section [%2zu] '%s' must be allocated\n" +msgstr "section [%2zu] ‘%s’ must be allocated\n" + +#: src/elflint.c:4759 +#, c-format +msgid "call frame search table must not be writable\n" +msgstr "call frame search table must not be writable\n" + +#: src/elflint.c:4762 +#, c-format +msgid "section [%2zu] '%s' must not be writable\n" +msgstr "section [%2zu] ‘%s’ must not be writable\n" + +#: src/elflint.c:4767 +#, c-format +msgid "call frame search table must not be executable\n" +msgstr "call frame search table must not be executable\n" + +#: src/elflint.c:4770 +#, c-format +msgid "section [%2zu] '%s' must not be executable\n" +msgstr "section [%2zu] ‘%s’ must not be executable\n" + +#: src/elflint.c:4784 +#, c-format +msgid "program header entry %d: file size greater than memory size\n" +msgstr "program header entry %d: file size greater than memory size\n" + +#: src/elflint.c:4791 +#, c-format +msgid "program header entry %d: alignment not a power of 2\n" +msgstr "program header entry %d: alignment not a power of 2\n" + +#: src/elflint.c:4794 +#, c-format +msgid "" +"program header entry %d: file offset and virtual address not module of " +"alignment\n" +msgstr "" +"program header entry %d: file offset and virtual address not module of " +"alignment\n" + +#: src/elflint.c:4807 +#, c-format +msgid "" +"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " +"program header entry" +msgstr "" +"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " +"program header entry" + +#: src/elflint.c:4841 +#, c-format +msgid "cannot read ELF header: %s\n" +msgstr "cannot read ELF header: %s\n" + +#: src/elflint.c:4853 +#, c-format +msgid "cannot create backend for ELF file\n" +msgstr "cannot create backend for ELF file\n" + +#: src/elflint.c:4874 +#, c-format +msgid "text relocation flag set but not needed\n" +msgstr "text relocation flag set but not needed\n" + +#: src/findtextrel.c:60 +msgid "Input Selection:" +msgstr "Input Selection:" + +#: src/findtextrel.c:61 +msgid "Prepend PATH to all file names" +msgstr "Prepend PATH to all file names" + +#: src/findtextrel.c:63 +msgid "Use PATH as root of debuginfo hierarchy" +msgstr "Use PATH as root of debuginfo hierarchy" + +#. Short description of program. +#: src/findtextrel.c:70 +msgid "Locate source of text relocations in FILEs (a.out by default)." +msgstr "Locate source of text relocations in FILEs (a.out by default)." + +#. Strings for arguments in help texts. +#: src/findtextrel.c:74 src/nm.c:107 src/objdump.c:70 src/size.c:79 +#: src/strings.c:86 src/strip.c:100 +msgid "[FILE...]" +msgstr "[FILE...]" + +#: src/findtextrel.c:223 +#, c-format +msgid "cannot get ELF header '%s': %s" +msgstr "cannot get ELF header '%s': %s" + +#: src/findtextrel.c:234 +#, c-format +msgid "'%s' is not a DSO or PIE" +msgstr "‘%s’ is not a DSO or PIE" + +#: src/findtextrel.c:254 +#, c-format +msgid "getting get section header of section %zu: %s" +msgstr "getting get section header of section %zu: %s" + +#: src/findtextrel.c:278 +#, c-format +msgid "cannot read dynamic section: %s" +msgstr "cannot read dynamic section: %s" + +#: src/findtextrel.c:299 +#, c-format +msgid "no text relocations reported in '%s'" +msgstr "no text relocations reported in ‘%s’" + +#: src/findtextrel.c:310 +#, c-format +msgid "while reading ELF file" +msgstr "while reading ELF file" + +#: src/findtextrel.c:314 +#, c-format +msgid "cannot get program header count: %s" +msgstr "cannot get program header count: %s" + +#: src/findtextrel.c:325 src/findtextrel.c:340 +#, c-format +msgid "cannot get program header index at offset %zd: %s" +msgstr "cannot get program header index at offset %zd: %s" + +#: src/findtextrel.c:396 +#, c-format +msgid "cannot get symbol table section %zu in '%s': %s" +msgstr "cannot get symbol table section %zu in '%s': %s" + +#: src/findtextrel.c:417 src/findtextrel.c:440 +#, c-format +msgid "cannot get relocation at index %d in section %zu in '%s': %s" +msgstr "cannot get relocation at index %d in section %zu in '%s': %s" + +#: src/findtextrel.c:506 +#, c-format +msgid "%s not compiled with -fpic/-fPIC\n" +msgstr "%s not compiled with -fpic/-fPIC\n" + +#: src/findtextrel.c:560 +#, c-format +msgid "" +"the file containing the function '%s' is not compiled with -fpic/-fPIC\n" +msgstr "" +"the file containing the function ‘%s’ is not compiled with -fpic/-" +"fPIC\n" + +#: src/findtextrel.c:567 src/findtextrel.c:587 +#, c-format +msgid "" +"the file containing the function '%s' might not be compiled with -fpic/-" +"fPIC\n" +msgstr "" +"the file containing the function ‘%s’ might not be compiled with -" +"fpic/-fPIC\n" + +#: src/findtextrel.c:575 +#, 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 "" +"either the file containing the function ‘%s’ or the file containing " +"the function ‘%s’ is not compiled with -fpic/-fPIC\n" + +#: src/findtextrel.c:595 +#, c-format +msgid "" +"a relocation modifies memory at offset %llu in a write-protected segment\n" +msgstr "" +"a relocation modifies memory at offset %llu in a write-protected segment\n" + +#: src/nm.c:65 src/strip.c:69 +msgid "Output selection:" +msgstr "Output selection:" + +#: src/nm.c:66 +msgid "Display debugger-only symbols" +msgstr "Display debugger-only symbols" + +#: src/nm.c:67 +msgid "Display only defined symbols" +msgstr "Display only defined symbols" + +#: src/nm.c:70 +msgid "Display dynamic symbols instead of normal symbols" +msgstr "Display dynamic symbols instead of normal symbols" + +#: src/nm.c:71 +msgid "Display only external symbols" +msgstr "Display only external symbols" + +#: src/nm.c:72 +msgid "Display only undefined symbols" +msgstr "Display only undefined symbols" + +#: src/nm.c:74 +msgid "Include index for symbols from archive members" +msgstr "Include index for symbols from archive members" + +#: src/nm.c:76 src/size.c:53 +msgid "Output format:" +msgstr "Output format:" + +#: src/nm.c:78 +msgid "Print name of the input file before every symbol" +msgstr "Print name of the input file before every symbol" + +#: src/nm.c:81 +msgid "" +"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The " +"default is `sysv'" +msgstr "" +"Use the output format FORMAT. FORMAT can be ‘bsd’, ‘sysv’ or " +"‘posix’. The default is ‘sysv’" + +#: src/nm.c:83 +msgid "Same as --format=bsd" +msgstr "Same as --format=bsd" + +#: src/nm.c:84 +msgid "Same as --format=posix" +msgstr "Same as --format=posix" + +#: src/nm.c:85 src/size.c:59 +msgid "Use RADIX for printing symbol values" +msgstr "Use RADIX for printing symbol values" + +#: src/nm.c:86 +msgid "Mark special symbols" +msgstr "Mark special symbols" + +#: src/nm.c:88 +msgid "Print size of defined symbols" +msgstr "Print size of defined symbols" + +#: src/nm.c:90 src/size.c:67 src/strip.c:74 src/unstrip.c:68 +msgid "Output options:" +msgstr "Output options:" + +#: src/nm.c:91 +msgid "Sort symbols numerically by address" +msgstr "Sort symbols numerically by address" + +#: src/nm.c:93 +msgid "Do not sort the symbols" +msgstr "Do not sort the symbols" + +#: src/nm.c:94 +msgid "Reverse the sense of the sort" +msgstr "Reverse the sense of the sort" + +#: src/nm.c:97 +msgid "Decode low-level symbol names into source code names" +msgstr "Decode low-level symbol names into source code names" + +#. Short description of program. +#: src/nm.c:104 +msgid "List symbols from FILEs (a.out by default)." +msgstr "List symbols from FILEs (a.out by default)." + +#: src/nm.c:115 src/objdump.c:78 +msgid "Output formatting" +msgstr "Output formatting" + +#: src/nm.c:139 src/objdump.c:102 src/size.c:104 src/strip.c:132 +#, c-format +msgid "%s: INTERNAL ERROR %d (%s): %s" +msgstr "%s: INTERNAL ERROR %d (%s): %s" + +#: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 +#: src/strip.c:2763 +#, c-format +msgid "while closing '%s'" +msgstr "while closing ‘%s’" + +#: src/nm.c:402 src/objdump.c:279 src/strip.c:827 +#, c-format +msgid "%s: File format not recognized" +msgstr "%s: File format not recognized" + +#. Note: 0 is no valid offset. +#: src/nm.c:442 +msgid "" +"\n" +"Archive index:\n" +msgstr "" +"\n" +"Archive index:\n" + +#: src/nm.c:451 +#, c-format +msgid "invalid offset %zu for symbol %s" +msgstr "invalid offset %zu for symbol %s" + +#: src/nm.c:456 +#, c-format +msgid "%s in %s\n" +msgstr "%s in %s\n" + +#: src/nm.c:464 +#, c-format +msgid "cannot reset archive offset to beginning" +msgstr "cannot reset archive offset to beginning" + +#: src/nm.c:489 src/objdump.c:327 +#, c-format +msgid "%s%s%s: file format not recognized" +msgstr "%s%s%s: file format not recognized" + +#: src/nm.c:702 +msgid "cannot create search tree" +msgstr "cannot create search tree" + +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 +#, c-format +msgid "cannot get section header string table index" +msgstr "cannot get section header string table index" + +#. We always print this prolog. +#: src/nm.c:767 +#, c-format +msgid "" +"\n" +"\n" +"Symbols from %s:\n" +"\n" +msgstr "" +"\n" +"\n" +"Symbols from %s:\n" +"\n" + +#. The header line. +#: src/nm.c:770 +#, c-format +msgid "" +"%*s%-*s %-*s Class Type %-*s %*s Section\n" +"\n" +msgstr "" +"%*s%-*s %-*s Class Type %-*s %*s Section\n" +"\n" + +#: src/nm.c:772 +msgctxt "sysv" +msgid "Name" +msgstr "Name" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:774 +msgctxt "sysv" +msgid "Value" +msgstr "Value" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:776 +msgctxt "sysv" +msgid "Size" +msgstr "Size" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:778 +msgctxt "sysv" +msgid "Line" +msgstr "Line" + +#: src/nm.c:1245 +#, c-format +msgid "%s: entry size in section %zd `%s' is not what we expect" +msgstr "%s: entry size in section %zd ‘%s’ is not what we expect" + +#: src/nm.c:1250 +#, c-format +msgid "%s: size of section %zd `%s' is not multiple of entry size" +msgstr "%s: size of section %zd ‘%s’ is not multiple of entry size" + +#: src/nm.c:1330 +#, c-format +msgid "%s: entries (%zd) in section %zd `%s' is too large" +msgstr "%s: entries (%zd) in section %zd ‘%s’ is too large" + +#. XXX Add machine specific object file types. +#: src/nm.c:1566 +#, c-format +msgid "%s%s%s%s: Invalid operation" +msgstr "%s%s%s%s: Invalid operation" + +#: src/nm.c:1616 +#, c-format +msgid "%s%s%s: no symbols" +msgstr "%s%s%s: no symbols" + +#: src/objdump.c:51 +msgid "Mode selection:" +msgstr "Mode selection:" + +#: src/objdump.c:52 +msgid "Display relocation information." +msgstr "Display relocation information." + +#: src/objdump.c:54 +msgid "Display the full contents of all sections requested" +msgstr "Display the full contents of all sections requested" + +#: src/objdump.c:56 +msgid "Display assembler code of executable sections" +msgstr "Display assembler code of executable sections" + +#: src/objdump.c:58 +msgid "Output content selection:" +msgstr "Output content selection:" + +#: src/objdump.c:60 +msgid "Only display information for section NAME." +msgstr "Only display information for section NAME." + +#. Short description of program. +#: src/objdump.c:66 +msgid "Show information from FILEs (a.out by default)." +msgstr "Show information from FILEs (a.out by default)." + +#: src/objdump.c:217 src/readelf.c:630 +msgid "No operation specified.\n" +msgstr "No operation specified.\n" + +#: src/objdump.c:257 src/objdump.c:269 +#, c-format +msgid "while close `%s'" +msgstr "while close ‘%s’" + +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 +msgid "INVALID SYMBOL" +msgstr "INVALID SYMBOL" + +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 +msgid "INVALID SECTION" +msgstr "INVALID SECTION" + +#: src/objdump.c:497 +#, c-format +msgid "" +"\n" +"RELOCATION RECORDS FOR [%s]:\n" +"%-*s TYPE VALUE\n" +msgstr "" +"\n" +"RELOCATION RECORDS FOR [%s]:\n" +"%-*s TYPE VALUE\n" + +#: src/objdump.c:500 +msgid "OFFSET" +msgstr "OFFSET" + +#: src/objdump.c:565 +#, c-format +msgid "Contents of section %s:\n" +msgstr "Contents of section %s:\n" + +#: src/objdump.c:686 +msgid "cannot disassemble" +msgstr "cannot disassemble" + +#: src/objdump.c:757 +msgid "cannot create backend for elf file" +msgstr "cannot create backend for elf file" + +#. Short description of program. +#: src/ranlib.c:62 +msgid "Generate an index to speed access to archives." +msgstr "Generate an index to speed access to archives." + +#. Strings for arguments in help texts. +#: src/ranlib.c:65 +msgid "ARCHIVE" +msgstr "ARCHIVE" + +#: src/ranlib.c:101 +#, c-format +msgid "Archive name required" +msgstr "Archive name required" + +#: src/ranlib.c:165 +#, c-format +msgid "'%s' is no archive" +msgstr "‘%s’ is no archive" + +#: src/ranlib.c:200 +#, c-format +msgid "error while freeing sub-ELF descriptor: %s" +msgstr "error while freeing sub-ELF descriptor: %s" + +#: src/readelf.c:97 +msgid "ELF input selection:" +msgstr "ELF input selection:" + +#: src/readelf.c:99 +msgid "" +"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" +msgstr "" +"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" + +#: src/readelf.c:102 +msgid "" +"Used with -w to find the skeleton Compile Units in FILE associated with the " +"Split Compile units in a .dwo input file" +msgstr "" +"Used with -w to find the skeleton Compile Units in FILE associated with the " +"Split Compile units in a .dwo input file" + +#: src/readelf.c:104 +msgid "ELF output selection:" +msgstr "ELF output selection:" + +#: src/readelf.c:106 +msgid "All these plus -p .strtab -p .dynstr -p .comment" +msgstr "All these plus -p .strtab -p .dynstr -p .comment" + +#: src/readelf.c:107 +msgid "Display the dynamic segment" +msgstr "Display the dynamic segment" + +#: src/readelf.c:108 +msgid "Display the ELF file header" +msgstr "Display the ELF file header" + +#: src/readelf.c:110 +msgid "Display histogram of bucket list lengths" +msgstr "Display histogram of bucket list lengths" + +#: src/readelf.c:111 +msgid "Display the program headers" +msgstr "Display the program headers" + +#: src/readelf.c:113 +msgid "Display relocations" +msgstr "Display relocations" + +#: src/readelf.c:114 +msgid "Display the section groups" +msgstr "Display the section groups" + +#: src/readelf.c:115 +msgid "Display the sections' headers" +msgstr "Display the sections' headers" + +#: src/readelf.c:118 +msgid "Display the symbol table sections" +msgstr "Display the symbol table sections" + +#: src/readelf.c:121 +msgid "Display (only) the dynamic symbol table" +msgstr "Display (only) the dynamic symbol table" + +#: src/readelf.c:122 +msgid "Display versioning information" +msgstr "Display versioning information" + +#: src/readelf.c:123 +msgid "Display the ELF notes" +msgstr "Display the ELF notes" + +#: src/readelf.c:125 +msgid "Display architecture specific information, if any" +msgstr "Display architecture specific information, if any" + +#: src/readelf.c:127 +msgid "Display sections for exception handling" +msgstr "Display sections for exception handling" + +#: src/readelf.c:129 +msgid "Additional output selection:" +msgstr "Additional output selection:" + +#: src/readelf.c:131 +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 "" +"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" + +#: src/readelf.c:135 +msgid "Dump the uninterpreted contents of SECTION, by number or name" +msgstr "Dump the uninterpreted contents of SECTION, by number or name" + +#: src/readelf.c:137 +msgid "Print string contents of sections" +msgstr "Print string contents of sections" + +#: src/readelf.c:140 +msgid "Display the symbol index of an archive" +msgstr "Display the symbol index of an archive" + +#: src/readelf.c:142 +msgid "Use the dynamic segment when possible for displaying info" +msgstr "Use the dynamic segment when possible for displaying info" + +#: src/readelf.c:144 +msgid "Output control:" +msgstr "Output control:" + +#: src/readelf.c:146 +msgid "Do not find symbol names for addresses in DWARF data" +msgstr "Do not find symbol names for addresses in DWARF data" + +#: src/readelf.c:148 +msgid "" +"Display just offsets instead of resolving values to addresses in DWARF data" +msgstr "" +"Display just offsets instead of resolving values to addresses in DWARF data" + +#: src/readelf.c:150 +msgid "Ignored for compatibility (lines always wide)" +msgstr "Ignored for compatibility (lines always wide)" + +#: src/readelf.c:152 +msgid "" +"Show compression information for compressed sections (when used with -S); " +"decompress section before dumping data (when used with -p or -x)" +msgstr "" +"Show compression information for compressed sections (when used with -S); " +"decompress section before dumping data (when used with -p or -x)" + +#. Short description of program. +#: src/readelf.c:157 +msgid "Print information from ELF file in human-readable form." +msgstr "Print information from ELF file in human-readable form." + +#. Look up once. +#: src/readelf.c:395 +msgid "yes" +msgstr "yes" + +#: src/readelf.c:396 +msgid "no" +msgstr "no" + +#: src/readelf.c:598 +#, c-format +msgid "Unknown DWARF debug section `%s'.\n" +msgstr "Unknown DWARF debug section ‘%s’.\n" + +#: src/readelf.c:669 src/readelf.c:780 +#, c-format +msgid "cannot generate Elf descriptor: %s" +msgstr "cannot generate Elf descriptor: %s" + +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 +#, c-format +msgid "cannot determine number of sections: %s" +msgstr "cannot determine number of sections: %s" + +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 +#, c-format +msgid "cannot get section: %s" +msgstr "cannot get section: %s" + +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 +#: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 +#: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 +#: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 +#: 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 "cannot get section header: %s" + +#: src/readelf.c:711 +#, c-format +msgid "cannot get section name" +msgstr "cannot get section name" + +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 +#, c-format +msgid "cannot get %s content: %s" +msgstr "cannot get %s content: %s" + +#: src/readelf.c:736 +#, c-format +msgid "cannot create temp file '%s'" +msgstr "cannot create temp file ‘%s’" + +#: src/readelf.c:745 +#, c-format +msgid "cannot write section data" +msgstr "cannot write section data" + +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 +#, c-format +msgid "error while closing Elf descriptor: %s" +msgstr "error while closing Elf descriptor: %s" + +#: src/readelf.c:758 +#, c-format +msgid "error while rewinding file descriptor" +msgstr "error while rewinding file descriptor" + +#: src/readelf.c:792 +#, c-format +msgid "'%s' is not an archive, cannot print archive index" +msgstr "‘%s’ is not an archive, cannot print archive index" + +#: src/readelf.c:896 +#, c-format +msgid "cannot stat input file" +msgstr "cannot stat input file" + +#: src/readelf.c:898 +#, c-format +msgid "input file is empty" +msgstr "input file is empty" + +#: src/readelf.c:900 +#, c-format +msgid "failed reading '%s': %s" +msgstr "failed reading '%s': %s" + +#: src/readelf.c:929 +#, c-format +msgid "No such section '%s' in '%s'" +msgstr "No such section ‘%s’ in ‘%s’" + +#: src/readelf.c:988 +#, c-format +msgid "cannot read ELF header: %s" +msgstr "cannot read ELF header: %s" + +#: src/readelf.c:996 +#, c-format +msgid "cannot create EBL handle" +msgstr "cannot create EBL handle" + +#: src/readelf.c:1007 +#, c-format +msgid "cannot determine number of program headers: %s" +msgstr "cannot determine number of program headers: %s" + +#: src/readelf.c:1039 +#, c-format +msgid "cannot read ELF: %s" +msgstr "cannot read ELF: %s" + +#: src/readelf.c:1072 +msgid "cannot find section" +msgstr "cannot find section" + +#: src/readelf.c:1109 +msgid "NONE (None)" +msgstr "NONE (None)" + +#: src/readelf.c:1110 +msgid "REL (Relocatable file)" +msgstr "REL (Relocatable file)" + +#: src/readelf.c:1111 +msgid "EXEC (Executable file)" +msgstr "EXEC (Executable file)" + +#: src/readelf.c:1112 +msgid "DYN (Shared object file)" +msgstr "DYN (Shared object file)" + +#: src/readelf.c:1113 +msgid "CORE (Core file)" +msgstr "CORE (Core file)" + +#: src/readelf.c:1118 +#, c-format +msgid "OS Specific: (%x)\n" +msgstr "OS Specific: (%x)\n" + +#. && e_type <= ET_HIPROC always true +#: src/readelf.c:1120 +#, c-format +msgid "Processor Specific: (%x)\n" +msgstr "Processor Specific: (%x)\n" + +#: src/readelf.c:1130 +msgid "" +"ELF Header:\n" +" Magic: " +msgstr "" +"ELF Header:\n" +" Magic: " + +#: src/readelf.c:1134 +#, c-format +msgid "" +"\n" +" Class: %s\n" +msgstr "" +"\n" +" Class: %s\n" + +#: src/readelf.c:1139 +#, c-format +msgid " Data: %s\n" +msgstr " Data: %s\n" + +#: src/readelf.c:1145 +#, c-format +msgid " Ident Version: %hhd %s\n" +msgstr " Ident Version: %hhd %s\n" + +#: src/readelf.c:1147 src/readelf.c:1169 +msgid "(current)" +msgstr "(current)" + +#: src/readelf.c:1151 +#, c-format +msgid " OS/ABI: %s\n" +msgstr " OS/ABI: %s\n" + +#: src/readelf.c:1154 +#, c-format +msgid " ABI Version: %hhd\n" +msgstr " ABI Version: %hhd\n" + +#: src/readelf.c:1157 +msgid " Type: " +msgstr " Type: " + +#: src/readelf.c:1162 +#, c-format +msgid " Machine: %s\n" +msgstr " Machine: %s\n" + +#: src/readelf.c:1164 +#, c-format +msgid " Machine: : 0x%x\n" +msgstr " Machine: : 0x%x\n" + +#: src/readelf.c:1167 +#, c-format +msgid " Version: %d %s\n" +msgstr " Version: %d %s\n" + +#: src/readelf.c:1171 +#, c-format +msgid " Entry point address: %#\n" +msgstr " Entry point address: %#\n" + +#: src/readelf.c:1174 +#, c-format +msgid " Start of program headers: % %s\n" +msgstr " Start of program headers: % %s\n" + +#: src/readelf.c:1175 src/readelf.c:1178 +msgid "(bytes into file)" +msgstr "(bytes into file)" + +#: src/readelf.c:1177 +#, c-format +msgid " Start of section headers: % %s\n" +msgstr " Start of section headers: % %s\n" + +#: src/readelf.c:1180 +#, c-format +msgid " Flags: %s\n" +msgstr " Flags: %s\n" + +#: src/readelf.c:1183 +#, c-format +msgid " Size of this header: % %s\n" +msgstr " Size of this header: % %s\n" + +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 +msgid "(bytes)" +msgstr "(bytes)" + +#: src/readelf.c:1186 +#, c-format +msgid " Size of program header entries: % %s\n" +msgstr " Size of program header entries: % %s\n" + +#: src/readelf.c:1189 +#, c-format +msgid " Number of program headers entries: %" +msgstr " Number of program headers entries: %" + +#: src/readelf.c:1196 +#, c-format +msgid " (% in [0].sh_info)" +msgstr " (% in [0].sh_info)" + +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 +msgid " ([0] not available)" +msgstr " ([0] not available)" + +#: src/readelf.c:1203 +#, c-format +msgid " Size of section header entries: % %s\n" +msgstr " Size of section header entries: % %s\n" + +#: src/readelf.c:1206 +#, c-format +msgid " Number of section headers entries: %" +msgstr " Number of section headers entries: %" + +#: src/readelf.c:1213 +#, c-format +msgid " (% in [0].sh_size)" +msgstr " (% in [0].sh_size)" + +#. We managed to get the zeroth section. +#: src/readelf.c:1226 +#, c-format +msgid " (% in [0].sh_link)" +msgstr " (% in [0].sh_link)" + +#: src/readelf.c:1234 +#, c-format +msgid "" +" Section header string table index: XINDEX%s\n" +"\n" +msgstr "" +" Section header string table index: XINDEX%s\n" +"\n" + +#: src/readelf.c:1238 +#, c-format +msgid "" +" Section header string table index: %\n" +"\n" +msgstr "" +" Section header string table index: %\n" +"\n" + +#: src/readelf.c:1288 src/readelf.c:1496 +#, c-format +msgid "cannot get number of sections: %s" +msgstr "cannot get number of sections: %s" + +#: src/readelf.c:1291 +#, c-format +msgid "" +"There are %zd section headers, starting at offset %#:\n" +"\n" +msgstr "" +"There are %zd section headers, starting at offset %#:\n" +"\n" + +#: src/readelf.c:1299 +#, c-format +msgid "cannot get section header string table index: %s" +msgstr "cannot get section header string table index: %s" + +#: src/readelf.c:1302 +msgid "Section Headers:" +msgstr "Section Headers:" + +#: src/readelf.c:1305 +msgid "" +"[Nr] Name Type Addr Off Size ES Flags Lk " +"Inf Al" +msgstr "" +"[Nr] Name Type Addr Off Size ES Flags Lk " +"Inf Al" + +#: src/readelf.c:1307 +msgid "" +"[Nr] Name Type Addr Off Size ES " +"Flags Lk Inf Al" +msgstr "" +"[Nr] Name Type Addr Off Size ES " +"Flags Lk Inf Al" + +#: src/readelf.c:1312 +msgid " [Compression Size Al]" +msgstr " [Compression Size Al]" + +#: src/readelf.c:1314 +msgid " [Compression Size Al]" +msgstr " [Compression Size Al]" + +#: src/readelf.c:1392 +#, c-format +msgid "bad compression header for section %zd: %s" +msgstr "bad compression header for section %zd: %s" + +#: src/readelf.c:1403 +#, c-format +msgid "bad gnu compressed size for section %zd: %s" +msgstr "bad gnu compressed size for section %zd: %s" + +#: src/readelf.c:1421 +msgid "Program Headers:" +msgstr "Program Headers:" + +#: src/readelf.c:1423 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" +msgstr "" +" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" + +#: src/readelf.c:1426 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz " +"MemSiz Flg Align" +msgstr "" +" Type Offset VirtAddr PhysAddr FileSiz " +"MemSiz Flg Align" + +#: src/readelf.c:1483 +#, c-format +msgid "\t[Requesting program interpreter: %s]\n" +msgstr "\t[Requesting program interpreter: %s]\n" + +#: src/readelf.c:1508 +msgid "" +"\n" +" Section to Segment mapping:\n" +" Segment Sections..." +msgstr "" +"\n" +" Section to Segment mapping:\n" +" Segment Sections..." + +#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#, c-format +msgid "cannot get program header: %s" +msgstr "cannot get program header: %s" + +#: src/readelf.c:1663 +#, 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] "" +"\n" +"COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains " +"%zu entry:\n" +msgstr[1] "" +"\n" +"COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains " +"%zu entries:\n" + +#: src/readelf.c:1668 +#, 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] "" +"\n" +"Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu " +"entry:\n" +msgstr[1] "" +"\n" +"Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu " +"entries:\n" + +#: src/readelf.c:1676 +msgid "" +msgstr "" + +#: src/readelf.c:1690 +msgid "" +msgstr "" + +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 +msgid "Couldn't uncompress section" +msgstr "Couldn't uncompress section" + +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 +#, c-format +msgid "cannot get section [%zd] header: %s" +msgstr "cannot get section [%zd] header: %s" + +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 +#, c-format +msgid "invalid sh_link value in section %zu" +msgstr "invalid sh_link value in section %zu" + +#: src/readelf.c:1889 +#, c-format +msgid "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" +msgstr[1] "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" + +#: src/readelf.c:1902 +#, c-format +msgid "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08\n" +msgid_plural "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08\n" +msgstr[0] "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08\n" +msgstr[1] "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08\n" + +#: src/readelf.c:1912 +msgid " Type Value\n" +msgstr " Type Value\n" + +#: src/readelf.c:1921 +msgid "cannot get string table by using dynamic segment" +msgstr "cannot get string table by using dynamic segment" + +#: src/readelf.c:1960 +#, c-format +msgid "Shared library: [%s]\n" +msgstr "Shared library: [%s]\n" + +#: src/readelf.c:1964 +#, c-format +msgid "Library soname: [%s]\n" +msgstr "Library soname: [%s]\n" + +#: src/readelf.c:1968 +#, c-format +msgid "Library rpath: [%s]\n" +msgstr "Library rpath: [%s]\n" + +#: src/readelf.c:1972 +#, c-format +msgid "Library runpath: [%s]\n" +msgstr "Library runpath: [%s]\n" + +#: src/readelf.c:1993 +#, c-format +msgid "% (bytes)\n" +msgstr "% (bytes)\n" + +#: src/readelf.c:2109 src/readelf.c:2298 +#, c-format +msgid "" +"\n" +"Invalid symbol table at offset %#0\n" +msgstr "" +"\n" +"Invalid symbol table at offset %#0\n" + +#: src/readelf.c:2126 src/readelf.c:2315 +#, c-format +msgid "" +"\n" +"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0 " +"contains %d entry:\n" +msgid_plural "" +"\n" +"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0 " +"contains %d entries:\n" +msgstr[0] "" +"\n" +"Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset " +"%#0 contains %d entry:\n" +msgstr[1] "" +"\n" +"Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset " +"%#0 contains %d entries:\n" + +#. The .rel.dyn section does not refer to a specific section but +#. instead of section index zero. Do not try to print a section +#. name. +#. 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. +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 +#, c-format +msgid "" +"\n" +"Relocation section [%2u] '%s' at offset %#0 contains %d entry:\n" +msgid_plural "" +"\n" +"Relocation section [%2u] '%s' at offset %#0 contains %d entries:\n" +msgstr[0] "" +"\n" +"Relocation section [%2u] ‘%s’ at offset %#0 contains %d " +"entry:\n" +msgstr[1] "" +"\n" +"Relocation section [%2u] ‘%s’ at offset %#0 contains %d " +"entries:\n" + +#: src/readelf.c:2151 +msgid " Offset Type Value Name\n" +msgstr " Offset Type Value Name\n" + +#: src/readelf.c:2153 +msgid " Offset Type Value Name\n" +msgstr " Offset Type Value Name\n" + +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 +msgid "" +msgstr "" + +#: src/readelf.c:2340 +msgid " Offset Type Value Addend Name\n" +msgstr " Offset Type Value Addend Name\n" + +#: src/readelf.c:2342 +msgid " Offset Type Value Addend Name\n" +msgstr "" +" Offset Type Value Addend Name\n" + +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "bad dynamic symbol" + +#: src/readelf.c:2868 +#, 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] "" +"\n" +"Symbol table [%2u] ‘%s’ contains %u entry:\n" +msgstr[1] "" +"\n" +"Symbol table [%2u] ‘%s’ contains %u entries:\n" + +#: src/readelf.c:2873 +#, c-format +msgid " %lu local symbol String table: [%2u] '%s'\n" +msgid_plural " %lu local symbols String table: [%2u] '%s'\n" +msgstr[0] " %lu local symbol String table: [%2u] ‘%s’\n" +msgstr[1] " %lu local symbols String table: [%2u] ‘%s’\n" + +#: src/readelf.c:2881 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num: Value Size Type Bind Vis Ndx Name\n" + +#: src/readelf.c:2883 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num: Value Size Type Bind Vis Ndx Name\n" + +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "Dynamic symbol information is not available for displaying symbols." + +#: src/readelf.c:3102 +msgid "none" +msgstr "none" + +#: src/readelf.c:3119 +msgid "| " +msgstr "| " + +#: src/readelf.c:3149 +#, c-format +msgid "" +"\n" +"Version needs section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Version needs section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Version needs section [%2u] ‘%s’ contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" +msgstr[1] "" +"\n" +"Version needs section [%2u] ‘%s’ contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" + +#: src/readelf.c:3170 +#, c-format +msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" +msgstr " %#06x: Version: %hu File: %s Cnt: %hu\n" + +#: src/readelf.c:3183 +#, c-format +msgid " %#06x: Name: %s Flags: %s Version: %hu\n" +msgstr " %#06x: Name: %s Flags: %s Version: %hu\n" + +#: src/readelf.c:3225 +#, c-format +msgid "" +"\n" +"Version definition section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Version definition section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Version definition section [%2u] ‘%s’ contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" +msgstr[1] "" +"\n" +"Version definition section [%2u] ‘%s’ contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" + +#: src/readelf.c:3253 +#, c-format +msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" +msgstr " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" + +#: src/readelf.c:3268 +#, c-format +msgid " %#06x: Parent %d: %s\n" +msgstr " %#06x: Parent %d: %s\n" + +#. Print the header. +#: src/readelf.c:3528 +#, c-format +msgid "" +"\n" +"Version symbols section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'" +msgid_plural "" +"\n" +"Version symbols section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'" +msgstr[0] "" +"\n" +"Version symbols section [%2u] ‘%s’ contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’" +msgstr[1] "" +"\n" +"Version symbols section [%2u] ‘%s’ contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’" + +#: src/readelf.c:3556 +msgid " 0 *local* " +msgstr " 0 *local* " + +#: src/readelf.c:3561 +msgid " 1 *global* " +msgstr " 1 *global* " + +#: src/readelf.c:3603 +#, c-format +msgid "" +"\n" +"Histogram for bucket list length in section [%2u] '%s' (total of %d " +"bucket):\n" +" Addr: %#0* Offset: %#08 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* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Histogram for bucket list length in section [%2u] ‘%s’ (total of %d " +"bucket):\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" +msgstr[1] "" +"\n" +"Histogram for bucket list length in section [%2u] ‘%s’ (total of %d " +"buckets):\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] " +"‘%s’\n" + +#: src/readelf.c:3625 +#, no-c-format +msgid " Length Number % of total Coverage\n" +msgstr " Length Number % of total Coverage\n" + +#: src/readelf.c:3627 +#, c-format +msgid " 0 %6 %5.1f%%\n" +msgstr " 0 %6 %5.1f%%\n" + +#: src/readelf.c:3634 +#, c-format +msgid "%7d %6 %5.1f%% %5.1f%%\n" +msgstr "%7d %6 %5.1f%% %5.1f%%\n" + +#: src/readelf.c:3647 +#, c-format +msgid "" +" Average number of tests: successful lookup: %f\n" +"\t\t\t unsuccessful lookup: %f\n" +msgstr "" +" Average number of tests: successful lookup: %f\n" +"\t\t\t unsuccessful lookup: %f\n" + +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 +#, c-format +msgid "cannot get data for section %d: %s" +msgstr "cannot get data for section %d: %s" + +#: src/readelf.c:3673 +#, c-format +msgid "invalid data in sysv.hash section %d" +msgstr "invalid data in sysv.hash section %d" + +#: src/readelf.c:3702 +#, c-format +msgid "invalid chain in sysv.hash section %d" +msgstr "invalid chain in sysv.hash section %d" + +#: src/readelf.c:3737 +#, c-format +msgid "invalid data in sysv.hash64 section %d" +msgstr "invalid data in sysv.hash64 section %d" + +#: src/readelf.c:3768 +#, c-format +msgid "invalid chain in sysv.hash64 section %d" +msgstr "invalid chain in sysv.hash64 section %d" + +#: src/readelf.c:3804 +#, c-format +msgid "invalid data in gnu.hash section %d" +msgstr "invalid data in gnu.hash section %d" + +#: src/readelf.c:3870 +#, c-format +msgid "" +" Symbol Bias: %u\n" +" Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" +msgstr "" +" Symbol Bias: %u\n" +" Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" + +#: src/readelf.c:3955 +#, c-format +msgid "" +"\n" +"Library list section [%2zu] '%s' at offset %#0 contains %d entry:\n" +msgid_plural "" +"\n" +"Library list section [%2zu] '%s' at offset %#0 contains %d entries:\n" +msgstr[0] "" +"\n" +"Library list section [%2zu] ‘%s’ at offset %#0 contains %d " +"entry:\n" +msgstr[1] "" +"\n" +"Library list section [%2zu] ‘%s’ at offset %#0 contains %d " +"entries:\n" + +#: src/readelf.c:3969 +msgid "" +" Library Time Stamp Checksum Version " +"Flags" +msgstr "" +" Library Time Stamp Checksum Version " +"Flags" + +#: src/readelf.c:4029 +#, c-format +msgid "" +"\n" +"Object attributes section [%2zu] '%s' of % bytes at offset " +"%#0:\n" +msgstr "" +"\n" +"Object attributes section [%2zu] ‘%s’ of % bytes at offset " +"%#0:\n" + +#: src/readelf.c:4046 +msgid " Owner Size\n" +msgstr " Owner Size\n" + +#: src/readelf.c:4070 +#, c-format +msgid " %-13s %4\n" +msgstr " %-13s %4\n" + +#. Unknown subsection, print and skip. +#: src/readelf.c:4109 +#, c-format +msgid " %-4u %12\n" +msgstr " %-4u %12\n" + +#. Tag_File +#: src/readelf.c:4114 +#, c-format +msgid " File: %11\n" +msgstr " File: %11\n" + +#: src/readelf.c:4164 +#, c-format +msgid " %s: %, %s\n" +msgstr " %s: %, %s\n" + +#: src/readelf.c:4167 +#, c-format +msgid " %s: %\n" +msgstr " %s: %\n" + +#: src/readelf.c:4170 +#, c-format +msgid " %s: %s\n" +msgstr " %s: %s\n" + +#: src/readelf.c:4180 +#, c-format +msgid " %u: %\n" +msgstr " %u: %\n" + +#: src/readelf.c:4183 +#, c-format +msgid " %u: %s\n" +msgstr " %u: %s\n" + +#: src/readelf.c:4221 +msgid "Couldn't get data from section" +msgstr "Couldn't get data from section" + +#: src/readelf.c:4286 +msgid "sprintf failure" +msgstr "sprintf failure" + +#: src/readelf.c:4770 +msgid "empty block" +msgstr "empty block" + +#: src/readelf.c:4773 +#, c-format +msgid "%zu byte block:" +msgstr "%zu byte block:" + +#: src/readelf.c:5251 +#, c-format +msgid "%*s[%2] %s \n" +msgstr "%*s[%2] %s \n" + +#: src/readelf.c:5423 +#, c-format +msgid "%s %# used with different address sizes" +msgstr "%s %# used with different address sizes" + +#: src/readelf.c:5430 +#, c-format +msgid "%s %# used with different offset sizes" +msgstr "%s %# used with different offset sizes" + +#: src/readelf.c:5437 +#, c-format +msgid "%s %# used with different base addresses" +msgstr "%s %# used with different base addresses" + +#: src/readelf.c:5444 +#, c-format +msgid "%s %# used with different attribute %s and %s" +msgstr "%s %# used with different attribute %s and %s" + +#: src/readelf.c:5544 +#, c-format +msgid " [%6tx] \n" +msgstr " [%6tx] \n" + +#: src/readelf.c:5552 +#, c-format +msgid " [%6tx] ... % bytes ...\n" +msgstr " [%6tx] ... % bytes ...\n" + +#: src/readelf.c:5658 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" [ Code]\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +" [ Code]\n" + +#: src/readelf.c:5666 +#, c-format +msgid "" +"\n" +"Abbreviation section at offset %:\n" +msgstr "" +"\n" +"Abbreviation section at offset %:\n" + +#: src/readelf.c:5679 +#, c-format +msgid " *** error while reading abbreviation: %s\n" +msgstr " *** error while reading abbreviation: %s\n" + +#: src/readelf.c:5695 +#, c-format +msgid " [%5u] offset: %, children: %s, tag: %s\n" +msgstr " [%5u] offset: %, children: %s, tag: %s\n" + +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" + +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 +#, c-format +msgid " Length: %8\n" +msgstr " Length: %8\n" + +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 +#, c-format +msgid " DWARF version: %8\n" +msgstr " DWARF version: %8\n" + +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 +#, c-format +msgid " Address size: %8\n" +msgstr " Address size: %8\n" + +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 +#, c-format +msgid " Segment size: %8\n" +msgstr " Segment size: %8\n" + +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 +#, c-format +msgid "Unknown version" +msgstr "Unknown version" + +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 +#, c-format +msgid "unsupported address size" +msgstr "unsupported address size" + +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 +#, c-format +msgid "unsupported segment size" +msgstr "unsupported segment size" + +#: src/readelf.c:5952 +#, c-format +msgid "cannot get .debug_aranges content: %s" +msgstr "cannot get .debug_aranges content: %s" + +#: src/readelf.c:5967 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %# contains %zu entry:\n" +msgid_plural "" +"\n" +"DWARF section [%2zu] '%s' at offset %# contains %zu entries:\n" +msgstr[0] "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %# contains %zu entry:\n" +msgstr[1] "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %# contains %zu entries:\n" + +#: src/readelf.c:5998 +#, c-format +msgid " [%*zu] ???\n" +msgstr " [%*zu] ???\n" + +#: src/readelf.c:6000 +#, c-format +msgid "" +" [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" +msgstr "" +" [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" + +#: src/readelf.c:6038 src/readelf.c:8981 +#, c-format +msgid "" +"\n" +"Table at offset %zu:\n" +msgstr "" +"\n" +"Table at offset %zu:\n" + +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 +#, c-format +msgid "invalid data in section [%zu] '%s'" +msgstr "invalid data in section [%zu] ‘%s’" + +#: src/readelf.c:6058 +#, c-format +msgid "" +"\n" +" Length: %6\n" +msgstr "" +"\n" +" Length: %6\n" + +#: src/readelf.c:6070 +#, c-format +msgid " DWARF version: %6\n" +msgstr " DWARF version: %6\n" + +#: src/readelf.c:6074 +#, c-format +msgid "unsupported aranges version" +msgstr "unsupported aranges version" + +#: src/readelf.c:6085 +#, c-format +msgid " CU offset: %6\n" +msgstr " CU offset: %6\n" + +#: src/readelf.c:6091 +#, c-format +msgid " Address size: %6\n" +msgstr " Address size: %6\n" + +#: src/readelf.c:6102 +#, c-format +msgid "" +" Segment size: %6\n" +"\n" +msgstr "" +" Segment size: %6\n" +"\n" + +#: src/readelf.c:6157 +#, c-format +msgid " %zu padding bytes\n" +msgstr " %zu padding bytes\n" + +#: src/readelf.c:6219 src/readelf.c:9727 +#, c-format +msgid "" +"Table at Offset 0x%:\n" +"\n" +msgstr "" +"Table at Offset 0x%:\n" +"\n" + +#: src/readelf.c:6274 src/readelf.c:9782 +#, c-format +msgid " Offset entries: %8\n" +msgstr " Offset entries: %8\n" + +#: src/readelf.c:6290 src/readelf.c:9798 +#, c-format +msgid " Unknown CU base: " +msgstr " Unknown CU base: " + +#: src/readelf.c:6292 src/readelf.c:9800 +#, c-format +msgid " CU [%6] base: " +msgstr " CU [%6] base: " + +#: src/readelf.c:6298 src/readelf.c:9806 +#, c-format +msgid " Not associated with a CU.\n" +msgstr " Not associated with a CU.\n" + +#: src/readelf.c:6309 src/readelf.c:9817 +#, c-format +msgid "too many offset entries for unit length" +msgstr "too many offset entries for unit length" + +#: src/readelf.c:6313 src/readelf.c:9821 +#, c-format +msgid " Offsets starting at 0x%:\n" +msgstr " Offsets starting at 0x%:\n" + +#: src/readelf.c:6365 +#, c-format +msgid "invalid range list data" +msgstr "invalid range list data" + +#: src/readelf.c:6550 src/readelf.c:10156 +#, c-format +msgid "" +" %zu padding bytes\n" +"\n" +msgstr "" +" %zu padding bytes\n" +"\n" + +#: src/readelf.c:6598 src/readelf.c:10205 +#, c-format +msgid "" +"\n" +" Unknown CU base: " +msgstr "" +"\n" +" Unknown CU base: " + +#: src/readelf.c:6600 src/readelf.c:10207 +#, c-format +msgid "" +"\n" +" CU [%6] base: " +msgstr "" +"\n" +" CU [%6] base: " + +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 +#, c-format +msgid " [%6tx] \n" +msgstr " [%6tx] \n" + +#: src/readelf.c:6634 src/readelf.c:10343 +msgid "base address" +msgstr "base address" + +#: src/readelf.c:6644 src/readelf.c:10353 +#, c-format +msgid " [%6tx] empty list\n" +msgstr " [%6tx] empty list\n" + +#: src/readelf.c:6908 +msgid " \n" +msgstr " \n" + +#: src/readelf.c:7165 +#, c-format +msgid "cannot get ELF: %s" +msgstr "cannot get ELF: %s" + +#: src/readelf.c:7189 +#, c-format +msgid "" +"\n" +"Call frame information section [%2zu] '%s' at offset %#:\n" +msgstr "" +"\n" +"Call frame information section [%2zu] ‘%s’ at offset %#:\n" + +#: src/readelf.c:7239 +#, c-format +msgid "" +"\n" +" [%6tx] Zero terminator\n" +msgstr "" +"\n" +" [%6tx] Zero terminator\n" + +#: src/readelf.c:7343 src/readelf.c:7497 +#, c-format +msgid "invalid augmentation length" +msgstr "invalid augmentation length" + +#: src/readelf.c:7358 +msgid "FDE address encoding: " +msgstr "FDE address encoding: " + +#: src/readelf.c:7364 +msgid "LSDA pointer encoding: " +msgstr "LSDA pointer encoding: " + +#: src/readelf.c:7474 +#, c-format +msgid " (offset: %#)" +msgstr " (offset: %#)" + +#: src/readelf.c:7481 +#, c-format +msgid " (end offset: %#)" +msgstr " (end offset: %#)" + +#: src/readelf.c:7518 +#, c-format +msgid " %-26sLSDA pointer: %#\n" +msgstr " %-26sLSDA pointer: %#\n" + +#: src/readelf.c:7603 +#, c-format +msgid "DIE [%] cannot get attribute code: %s" +msgstr "DIE [%] cannot get attribute code: %s" + +#: src/readelf.c:7613 +#, c-format +msgid "DIE [%] cannot get attribute form: %s" +msgstr "DIE [%] cannot get attribute form: %s" + +#: src/readelf.c:7635 +#, c-format +msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" +msgstr "DIE [%] cannot get attribute ‘%s’ (%s) value: %s" + +#: src/readelf.c:7965 +#, c-format +msgid "invalid file (%): %s" +msgstr "invalid file (%): %s" + +#: src/readelf.c:7969 +#, c-format +msgid "no srcfiles for CU [%]" +msgstr "no srcfiles for CU [%]" + +#: src/readelf.c:7973 +#, c-format +msgid "couldn't get DWARF CU: %s" +msgstr "couldn't get DWARF CU: %s" + +#: src/readelf.c:8295 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" [Offset]\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +" [Offset]\n" + +#: src/readelf.c:8345 +#, c-format +msgid "cannot get next unit: %s" +msgstr "cannot get next unit: %s" + +#: src/readelf.c:8365 +#, c-format +msgid "" +" Type unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +" Type signature: %#, Type offset: %# [%]\n" +msgstr "" +" Type unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +" Type signature: %#, Type offset: %# [%]\n" + +#: src/readelf.c:8377 +#, c-format +msgid "" +" Compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +msgstr "" +" Compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" + +#: src/readelf.c:8387 src/readelf.c:8548 +#, c-format +msgid " Unit type: %s (%)" +msgstr " Unit type: %s (%)" + +#: src/readelf.c:8414 +#, c-format +msgid "unknown version (%d) or unit type (%d)" +msgstr "unknown version (%d) or unit type (%d)" + +#: src/readelf.c:8443 +#, c-format +msgid "cannot get DIE offset: %s" +msgstr "cannot get DIE offset: %s" + +#: src/readelf.c:8452 +#, c-format +msgid "cannot get tag of DIE at offset [%] in section '%s': %s" +msgstr "cannot get tag of DIE at offset [%] in section '%s': %s" + +#: src/readelf.c:8488 +#, c-format +msgid "cannot get next DIE: %s\n" +msgstr "cannot get next DIE: %s\n" + +#: src/readelf.c:8496 +#, c-format +msgid "cannot get next DIE: %s" +msgstr "cannot get next DIE: %s" + +#: src/readelf.c:8540 +#, c-format +msgid "" +" Split compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +msgstr "" +" Split compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" + +#: src/readelf.c:8592 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +"\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +"\n" + +#: src/readelf.c:8924 +#, c-format +msgid "unknown form: %s" +msgstr "unknown form: %s" + +#. Print what we got so far. +#: src/readelf.c:9072 +#, c-format +msgid "" +"\n" +" Length: %\n" +" DWARF version: %\n" +" Prologue length: %\n" +" Address size: %zd\n" +" Segment selector size: %zd\n" +" Min instruction length: %\n" +" Max operations per instruction: %\n" +" Initial value if 'is_stmt': %\n" +" Line base: %\n" +" Line range: %\n" +" Opcode base: %\n" +"\n" +"Opcodes:\n" +msgstr "" +"\n" +" Length: %\n" +" DWARF version: %\n" +" Prologue length: %\n" +" Address size: %zd\n" +" Segment selector size: %zd\n" +" Min instruction length: %\n" +" Max operations per instruction: %\n" +" Initial value if 'is_stmt': %\n" +" Line base: %\n" +" Line range: %\n" +" Opcode base: %\n" +"\n" +"Opcodes:\n" + +#: src/readelf.c:9094 +#, c-format +msgid "cannot handle .debug_line version: %u\n" +msgstr "cannot handle .debug_line version: %u\n" + +#: src/readelf.c:9102 +#, c-format +msgid "cannot handle address size: %u\n" +msgstr "cannot handle address size: %u\n" + +#: src/readelf.c:9110 +#, c-format +msgid "cannot handle segment selector size: %u\n" +msgstr "cannot handle segment selector size: %u\n" + +#: src/readelf.c:9120 +#, c-format +msgid "invalid data at offset %tu in section [%zu] '%s'" +msgstr "invalid data at offset %tu in section [%zu] ‘%s’" + +#: src/readelf.c:9135 +#, c-format +msgid " [%*] %hhu argument\n" +msgid_plural " [%*] %hhu arguments\n" +msgstr[0] " [%*] %hhu argument\n" +msgstr[1] " [%*] %hhu arguments\n" + +#: src/readelf.c:9146 +msgid "" +"\n" +"Directory table:" +msgstr "" +"\n" +"Directory table:" + +#: src/readelf.c:9152 src/readelf.c:9229 +#, c-format +msgid " [" +msgstr " [" + +#: src/readelf.c:9223 +msgid "" +"\n" +"File name table:" +msgstr "" +"\n" +"File name table:" + +#: src/readelf.c:9284 +msgid " Entry Dir Time Size Name" +msgstr " Entry Dir Time Size Name" + +#: src/readelf.c:9330 +msgid "" +"\n" +"No line number statements." +msgstr "" +"\n" +"No line number statements." + +#: src/readelf.c:9334 +msgid "" +"\n" +"Line number statements:" +msgstr "" +"\n" +"Line number statements:" + +#: src/readelf.c:9349 +#, c-format +msgid "invalid maximum operations per instruction is zero" +msgstr "invalid maximum operations per instruction is zero" + +#: src/readelf.c:9383 +#, c-format +msgid " special opcode %u: address+%u = " +msgstr " special opcode %u: address+%u = " + +#: src/readelf.c:9387 +#, c-format +msgid ", op_index = %u, line%+d = %zu\n" +msgstr ", op_index = %u, line%+d = %zu\n" + +#: src/readelf.c:9390 +#, c-format +msgid ", line%+d = %zu\n" +msgstr ", line%+d = %zu\n" + +#: src/readelf.c:9408 +#, c-format +msgid " extended opcode %u: " +msgstr " extended opcode %u: " + +#: src/readelf.c:9413 +msgid " end of sequence" +msgstr " end of sequence" + +#: src/readelf.c:9431 +#, c-format +msgid " set address to " +msgstr " set address to " + +#: src/readelf.c:9459 +#, c-format +msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" +msgstr " define new file: dir=%u, mtime=%, length=%, name=%s\n" + +#: src/readelf.c:9473 +#, c-format +msgid " set discriminator to %u\n" +msgstr " set discriminator to %u\n" + +#: src/readelf.c:9500 +#, c-format +msgid " set inlined context %u, function name %s (0x%x)\n" +msgstr " set inlined context %u, function name %s (0x%x)\n" + +#: src/readelf.c:9524 +#, c-format +msgid " set function name %s (0x%x)\n" +msgstr " set function name %s (0x%x)\n" + +#. Unknown, ignore it. +#: src/readelf.c:9531 +msgid " unknown opcode" +msgstr " unknown opcode" + +#. Takes no argument. +#: src/readelf.c:9543 +msgid " copy" +msgstr " copy" + +#: src/readelf.c:9554 +#, c-format +msgid " advance address by %u to " +msgstr " advance address by %u to " + +#: src/readelf.c:9558 src/readelf.c:9619 +#, c-format +msgid ", op_index to %u" +msgstr ", op_index to %u" + +#: src/readelf.c:9570 +#, c-format +msgid " advance line by constant %d to %\n" +msgstr " advance line by constant %d to %\n" + +#: src/readelf.c:9580 +#, c-format +msgid " set file to %\n" +msgstr " set file to %\n" + +#: src/readelf.c:9591 +#, c-format +msgid " set column to %\n" +msgstr " set column to %\n" + +#: src/readelf.c:9598 +#, c-format +msgid " set '%s' to %\n" +msgstr " set ‘%s’ to %\n" + +#. Takes no argument. +#: src/readelf.c:9604 +msgid " set basic block flag" +msgstr " set basic block flag" + +#: src/readelf.c:9615 +#, c-format +msgid " advance address by constant %u to " +msgstr " advance address by constant %u to " + +#: src/readelf.c:9635 +#, c-format +msgid " advance address by fixed value %u to \n" +msgstr " advance address by fixed value %u to \n" + +#. Takes no argument. +#: src/readelf.c:9645 +msgid " set prologue end flag" +msgstr " set prologue end flag" + +#. Takes no argument. +#: src/readelf.c:9650 +msgid " set epilogue begin flag" +msgstr " set epilogue begin flag" + +#: src/readelf.c:9660 +#, c-format +msgid " set isa to %u\n" +msgstr " set isa to %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:9669 +#, c-format +msgid " unknown opcode with % parameter:" +msgid_plural " unknown opcode with % parameters:" +msgstr[0] " unknown opcode with % parameter:" +msgstr[1] " unknown opcode with % parameters:" + +#: src/readelf.c:9870 +#, c-format +msgid " \n" +msgstr " \n" + +#: src/readelf.c:9910 +#, c-format +msgid "invalid loclists data" +msgstr "invalid loclists data" + +#: src/readelf.c:10380 src/readelf.c:11425 +msgid " \n" +msgstr " \n" + +#: src/readelf.c:10511 +#, c-format +msgid "%*s*** non-terminated string at end of section" +msgstr "%*s*** non-terminated string at end of section" + +#: src/readelf.c:10534 +#, c-format +msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" +msgstr "%*s*** missing DW_MACINFO_start_file argument at end of section" + +#: src/readelf.c:10629 +#, c-format +msgid " Offset: 0x%\n" +msgstr " Offset: 0x%\n" + +#: src/readelf.c:10641 +#, c-format +msgid " Version: %\n" +msgstr " Version: %\n" + +#: src/readelf.c:10647 src/readelf.c:11546 +#, c-format +msgid " unknown version, cannot parse section\n" +msgstr " unknown version, cannot parse section\n" + +#: src/readelf.c:10654 +#, c-format +msgid " Flag: 0x%" +msgstr " Flag: 0x%" + +#: src/readelf.c:10683 +#, c-format +msgid " Offset length: %\n" +msgstr " Offset length: %\n" + +#: src/readelf.c:10691 +#, c-format +msgid " .debug_line offset: 0x%\n" +msgstr " .debug_line offset: 0x%\n" + +#: src/readelf.c:10716 +#, c-format +msgid " extension opcode table, % items:\n" +msgstr " extension opcode table, % items:\n" + +#: src/readelf.c:10723 +#, c-format +msgid " [%]" +msgstr " [%]" + +#: src/readelf.c:10735 +#, c-format +msgid " % arguments:" +msgstr " % arguments:" + +#: src/readelf.c:10750 +#, c-format +msgid " no arguments." +msgstr " no arguments." + +#: src/readelf.c:10951 +#, c-format +msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" +msgstr " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" + +#: src/readelf.c:11006 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" %*s String\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +" %*s String\n" + +#. TRANS: the debugstr| prefix makes the string unique. +#: src/readelf.c:11011 +msgctxt "debugstr" +msgid "Offset" +msgstr "Offset" + +#: src/readelf.c:11021 +#, c-format +msgid " *** error, missing string terminator\n" +msgstr " *** error, missing string terminator\n" + +#: src/readelf.c:11143 +#, c-format +msgid " Length: %8\n" +msgstr " Length: %8\n" + +#: src/readelf.c:11145 +#, c-format +msgid " Offset size: %8\n" +msgstr " Offset size: %8\n" + +#: src/readelf.c:11159 +#, c-format +msgid " DWARF version: %8\n" +msgstr " DWARF version: %8\n" + +#: src/readelf.c:11168 +#, c-format +msgid " Padding: %8\n" +msgstr " Padding: %8\n" + +#: src/readelf.c:11222 +#, c-format +msgid "" +"\n" +"Call frame search table section [%2zu] '.eh_frame_hdr':\n" +msgstr "" +"\n" +"Call frame search table section [%2zu] '.eh_frame_hdr':\n" + +#: src/readelf.c:11324 +#, c-format +msgid "" +"\n" +"Exception handling table section [%2zu] '.gcc_except_table':\n" +msgstr "" +"\n" +"Exception handling table section [%2zu] '.gcc_except_table':\n" + +#: src/readelf.c:11347 +#, c-format +msgid " LPStart encoding: %#x " +msgstr " LPStart encoding: %#x " + +#: src/readelf.c:11359 +#, c-format +msgid " TType encoding: %#x " +msgstr " TType encoding: %#x " + +#: src/readelf.c:11376 +#, c-format +msgid " Call site encoding: %#x " +msgstr " Call site encoding: %#x " + +#: src/readelf.c:11391 +msgid "" +"\n" +" Call site table:" +msgstr "" +"\n" +" Call site table:" + +#: src/readelf.c:11407 +#, c-format +msgid "" +" [%4u] Call site start: %#\n" +" Call site length: %\n" +" Landing pad: %#\n" +" Action: %u\n" +msgstr "" +" [%4u] Call site start: %#\n" +" Call site length: %\n" +" Landing pad: %#\n" +" Action: %u\n" + +#: src/readelf.c:11480 +#, c-format +msgid "invalid TType encoding" +msgstr "invalid TType encoding" + +#: src/readelf.c:11507 +#, c-format +msgid "" +"\n" +"GDB section [%2zu] '%s' at offset %# contains % bytes :\n" +msgstr "" +"\n" +"GDB section [%2zu] ‘%s’ at offset %# contains % " +"bytes :\n" + +#: src/readelf.c:11536 +#, c-format +msgid " Version: %\n" +msgstr " Version: %\n" + +#: src/readelf.c:11555 +#, c-format +msgid " CU offset: %#\n" +msgstr " CU offset: %#\n" + +#: src/readelf.c:11562 +#, c-format +msgid " TU offset: %#\n" +msgstr " TU offset: %#\n" + +#: src/readelf.c:11569 +#, c-format +msgid " address offset: %#\n" +msgstr " address offset: %#\n" + +#: src/readelf.c:11576 +#, c-format +msgid " symbol offset: %#\n" +msgstr " symbol offset: %#\n" + +#: src/readelf.c:11586 +#, c-format +msgid " shortcut offset: %#\n" +msgstr " shortcut offset: %#\n" + +#: src/readelf.c:11594 +#, c-format +msgid " constant offset: %#\n" +msgstr " constant offset: %#\n" + +#: src/readelf.c:11608 +#, c-format +msgid "" +"\n" +" CU list at offset %# contains %zu entries:\n" +msgstr "" +"\n" +" CU list at offset %# contains %zu entries:\n" + +#: src/readelf.c:11633 +#, c-format +msgid "" +"\n" +" TU list at offset %# contains %zu entries:\n" +msgstr "" +"\n" +" TU list at offset %# contains %zu entries:\n" + +#: src/readelf.c:11662 +#, c-format +msgid "" +"\n" +" Address list at offset %# contains %zu entries:\n" +msgstr "" +"\n" +" Address list at offset %# contains %zu entries:\n" + +#: src/readelf.c:11705 +#, c-format +msgid "" +"\n" +" Symbol table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +" Symbol table at offset %# contains %zu slots:\n" + +#: src/readelf.c:11790 +#, c-format +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "Language of main: %s\n" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "Name of main: " + +#: src/readelf.c:11886 +#, c-format +msgid "cannot get debug context descriptor: %s" +msgstr "cannot get debug context descriptor: %s" + +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 +#, c-format +msgid "cannot convert core note data: %s" +msgstr "cannot convert core note data: %s" + +#: src/readelf.c:12616 +#, c-format +msgid "" +"\n" +"%*s... ..." +msgstr "" +"\n" +"%*s... ..." + +#: src/readelf.c:13118 +msgid " Owner Data size Type\n" +msgstr " Owner Data size Type\n" + +#: src/readelf.c:13146 +#, c-format +msgid " %-13.*s %9 %s\n" +msgstr " %-13.*s %9 %s\n" + +#: src/readelf.c:13198 +#, c-format +msgid "cannot get content of note: %s" +msgstr "cannot get content of note: %s" + +#: src/readelf.c:13231 +#, c-format +msgid "" +"\n" +"Note section [%2zu] '%s' of % bytes at offset %#0:\n" +msgstr "" +"\n" +"Note section [%2zu] ‘%s’ of % bytes at offset %#0:\n" + +#: src/readelf.c:13254 +#, c-format +msgid "" +"\n" +"Note segment of % bytes at offset %#0:\n" +msgstr "" +"\n" +"Note segment of % bytes at offset %#0:\n" + +#: src/readelf.c:13301 +#, c-format +msgid "" +"\n" +"Section [%zu] '%s' has no data to dump.\n" +msgstr "" +"\n" +"Section [%zu] ‘%s’ has no data to dump.\n" + +#: src/readelf.c:13328 src/readelf.c:13379 +#, c-format +msgid "cannot get data for section [%zu] '%s': %s" +msgstr "cannot get data for section [%zu] '%s': %s" + +#: src/readelf.c:13333 +#, c-format +msgid "" +"\n" +"Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" +msgstr "" +"\n" +"Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" + +#: src/readelf.c:13338 +#, c-format +msgid "" +"\n" +"Hex dump of section [%zu] '%s', % bytes (%zd uncompressed) at offset " +"%#0:\n" +msgstr "" +"\n" +"Hex dump of section [%zu] '%s', % bytes (%zd uncompressed) at offset " +"%#0:\n" + +#: src/readelf.c:13352 +#, c-format +msgid "" +"\n" +"Section [%zu] '%s' has no strings to dump.\n" +msgstr "" +"\n" +"Section [%zu] ‘%s’ has no strings to dump.\n" + +#: src/readelf.c:13384 +#, c-format +msgid "" +"\n" +"String section [%zu] '%s' contains % bytes at offset %#0:\n" +msgstr "" +"\n" +"String section [%zu] ‘%s’ contains % bytes at offset " +"%#0:\n" + +#: src/readelf.c:13389 +#, c-format +msgid "" +"\n" +"String section [%zu] '%s' contains % bytes (%zd uncompressed) at " +"offset %#0:\n" +msgstr "" +"\n" +"String section [%zu] ‘%s’ contains % bytes (%zd uncompressed) " +"at offset %#0:\n" + +#: src/readelf.c:13437 +#, c-format +msgid "" +"\n" +"section [%lu] does not exist" +msgstr "" +"\n" +"section [%lu] does not exist" + +#: src/readelf.c:13467 +#, c-format +msgid "" +"\n" +"section '%s' does not exist" +msgstr "" +"\n" +"section ‘%s’ does not exist" + +#: src/readelf.c:13522 +#, c-format +msgid "cannot get symbol index of archive '%s': %s" +msgstr "cannot get symbol index of archive '%s': %s" + +#: src/readelf.c:13525 +#, c-format +msgid "" +"\n" +"Archive '%s' has no symbol index\n" +msgstr "" +"\n" +"Archive ‘%s’ has no symbol index\n" + +#: src/readelf.c:13529 +#, c-format +msgid "" +"\n" +"Index of archive '%s' has %zu entries:\n" +msgstr "" +"\n" +"Index of archive ‘%s’ has %zu entries:\n" + +#: src/readelf.c:13547 +#, c-format +msgid "cannot extract member at offset %zu in '%s': %s" +msgstr "cannot extract member at offset %zu in '%s': %s" + +#: src/readelf.c:13552 +#, c-format +msgid "Archive member '%s' contains:\n" +msgstr "Archive member ‘%s’ contains:\n" + +#: src/size.c:55 +msgid "" +"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default " +"is `bsd'" +msgstr "" +"Use the output format FORMAT. FORMAT can be ‘bsd’ or ‘sysv’. " +"The default is ‘bsd’" + +#: src/size.c:57 +msgid "Same as `--format=sysv'" +msgstr "Same as ‘--format=sysv’" + +#: src/size.c:58 +msgid "Same as `--format=bsd'" +msgstr "Same as ‘--format=bsd’" + +#: src/size.c:61 +msgid "Same as `--radix=10'" +msgstr "Same as ‘--radix=10’" + +#: src/size.c:62 +msgid "Same as `--radix=8'" +msgstr "Same as ‘--radix=8’" + +#: src/size.c:63 +msgid "Same as `--radix=16'" +msgstr "Same as ‘--radix=16’" + +#: src/size.c:65 +msgid "Similar to `--format=sysv' output but in one line" +msgstr "Similar to ‘--format=sysv’ output but in one line" + +#: src/size.c:69 +msgid "Print size and permission flags for loadable segments" +msgstr "Print size and permission flags for loadable segments" + +#: src/size.c:70 +msgid "Display the total sizes (bsd only)" +msgstr "Display the total sizes (bsd only)" + +#. Short description of program. +#: src/size.c:75 +msgid "List section sizes of FILEs (a.out by default)." +msgstr "List section sizes of FILEs (a.out by default)." + +#: src/size.c:239 +#, c-format +msgid "Invalid format: %s" +msgstr "Invalid format: %s" + +#: src/size.c:250 +#, c-format +msgid "Invalid radix: %s" +msgstr "Invalid radix: %s" + +#: src/size.c:309 +#, c-format +msgid "%s: file format not recognized" +msgstr "%s: file format not recognized" + +#: src/size.c:327 +msgctxt "bsd" +msgid "text" +msgstr "text" + +#: src/size.c:328 +msgctxt "bsd" +msgid "data" +msgstr "data" + +#: src/size.c:329 +msgctxt "bsd" +msgid "bss" +msgstr "bss" + +#: src/size.c:330 +msgctxt "bsd" +msgid "dec" +msgstr "dec" + +#: src/size.c:331 +msgctxt "bsd" +msgid "hex" +msgstr "hex" + +#: src/size.c:332 +msgctxt "bsd" +msgid "filename" +msgstr "filename" + +#: src/size.c:416 src/size.c:557 +#, c-format +msgid " (ex %s)" +msgstr " (ex %s)" + +#: src/size.c:418 +msgctxt "sysv" +msgid "section" +msgstr "section" + +#: src/size.c:419 +msgctxt "sysv" +msgid "size" +msgstr "size" + +#: src/size.c:420 +msgctxt "sysv" +msgid "addr" +msgstr "addr" + +#: src/size.c:449 src/size.c:452 src/size.c:455 +msgctxt "sysv" +msgid "Total" +msgstr "Total" + +#: src/size.c:479 +msgid "cannot get section header" +msgstr "cannot get section header" + +#: src/size.c:582 +msgid "(TOTALS)\n" +msgstr "(TOTALS)\n" + +#: src/stack.c:487 +#, c-format +msgid "-p PID should be a positive process id." +msgstr "-p PID should be a positive process id." + +#: src/stack.c:493 +#, c-format +msgid "Cannot open core file '%s'" +msgstr "Cannot open core file ‘%s’" + +#: src/stack.c:553 +#, c-format +msgid "-n MAXFRAMES should be 0 or higher." +msgstr "-n MAXFRAMES should be 0 or higher." + +#: src/stack.c:565 +#, c-format +msgid "-e EXEC needs a core given by --core." +msgstr "-e EXEC needs a core given by --core." + +#: src/stack.c:569 +#, c-format +msgid "-1 needs a thread id given by -p." +msgstr "-1 needs a thread id given by -p." + +#: src/stack.c:573 +#, c-format +msgid "One of -p PID or --core COREFILE should be given." +msgstr "One of -p PID or --core COREFILE should be given." + +#: src/stack.c:645 +msgid "Show stack of process PID" +msgstr "Show stack of process PID" + +#: src/stack.c:647 +msgid "Show stack found in COREFILE" +msgstr "Show stack found in COREFILE" + +#: src/stack.c:648 +msgid "(optional) EXECUTABLE that produced COREFILE" +msgstr "(optional) EXECUTABLE that produced COREFILE" + +#: src/stack.c:652 +msgid "Output selection options:" +msgstr "Output selection options:" + +#: src/stack.c:654 +msgid "Additionally show frame activation" +msgstr "Additionally show frame activation" + +#: src/stack.c:656 +msgid "Additionally try to lookup DWARF debuginfo name for frame address" +msgstr "Additionally try to lookup DWARF debuginfo name for frame address" + +#: src/stack.c:659 +msgid "" +"Additionally show inlined function frames using DWARF debuginfo if available " +"(implies -d)" +msgstr "" +"Additionally show inlined function frames using DWARF debuginfo if available " +"(implies -d)" + +#: src/stack.c:661 +msgid "Additionally show module file information" +msgstr "Additionally show module file information" + +#: src/stack.c:663 +msgid "Additionally show source file information" +msgstr "Additionally show source file information" + +#: src/stack.c:665 +msgid "" +"Show all additional information (activation, debugname, inlines, module and " +"source)" +msgstr "" +"Show all additional information (activation, debugname, inlines, module and " +"source)" + +#: src/stack.c:667 +msgid "Do not resolve address to function symbol name" +msgstr "Do not resolve address to function symbol name" + +#: src/stack.c:669 +msgid "Show raw function symbol names, do not try to demangle names" +msgstr "Show raw function symbol names, do not try to demangle names" + +#: src/stack.c:671 +msgid "Show module build-id, load address and pc offset" +msgstr "Show module build-id, load address and pc offset" + +#: src/stack.c:673 +msgid "Show the backtrace of only one thread" +msgstr "Show the backtrace of only one thread" + +#: src/stack.c:675 +msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)" +msgstr "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)" + +#: src/stack.c:677 +msgid "Show module memory map with build-id, elf and debug files detected" +msgstr "Show module memory map with build-id, elf and debug files detected" + +#: 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 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 "" +"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 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." + +#: src/stack.c:760 +#, c-format +msgid "Couldn't show any frames." +msgstr "Couldn't show any frames." + +#: src/strings.c:64 +msgid "Output Selection:" +msgstr "Output Selection:" + +#: src/strings.c:65 +msgid "Scan entire file, not only loaded sections" +msgstr "Scan entire file, not only loaded sections" + +#: src/strings.c:67 +msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed" +msgstr "" +"Only NUL-terminated sequences of MIN-LEN characters or more are printed" + +#: src/strings.c:68 +msgid "" +"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, " +"{B,L} = 32-bit" +msgstr "" +"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, " +"{B,L} = 32-bit" + +#: src/strings.c:72 +msgid "Print name of the file before each string." +msgstr "Print name of the file before each string." + +#: src/strings.c:74 +msgid "Print location of the string in base 8, 10, or 16 respectively." +msgstr "Print location of the string in base 8, 10, or 16 respectively." + +#: src/strings.c:75 +msgid "Alias for --radix=o" +msgstr "Alias for --radix=o" + +#. Short description of program. +#: src/strings.c:82 +msgid "Print the strings of printable characters in files." +msgstr "Print the strings of printable characters in files." + +#: src/strings.c:255 src/strings.c:290 +#, c-format +msgid "invalid value '%s' for %s parameter" +msgstr "invalid value ‘%s’ for %s parameter" + +#: src/strings.c:300 +msgid "invalid minimum length of matched string size" +msgstr "invalid minimum length of matched string size" + +#: src/strings.c:583 +msgid "lseek failed" +msgstr "lseek failed" + +#: src/strings.c:600 src/strings.c:664 +msgid "re-mmap failed" +msgstr "re-mmap failed" + +#: src/strings.c:637 +msgid "mprotect failed" +msgstr "mprotect failed" + +#: src/strings.c:726 +#, c-format +msgid "Skipping section %zd '%s' data outside file" +msgstr "Skipping section %zd ‘%s’ data outside file" + +#: src/strip.c:70 +msgid "Place stripped output into FILE" +msgstr "Place stripped output into FILE" + +#: src/strip.c:71 +msgid "Extract the removed sections into FILE" +msgstr "Extract the removed sections into FILE" + +#: src/strip.c:72 +msgid "Embed name FILE instead of -f argument" +msgstr "Embed name FILE instead of -f argument" + +#: src/strip.c:76 +msgid "Remove all debugging symbols" +msgstr "Remove all debugging symbols" + +#: src/strip.c:80 +msgid "Remove section headers (not recommended)" +msgstr "Remove section headers (not recommended)" + +#: src/strip.c:82 +msgid "Copy modified/access timestamps to the output" +msgstr "Copy modified/access timestamps to the output" + +#: src/strip.c:84 +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 reversible, needs -f)" +msgstr "" +"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)" + +#: src/strip.c:86 +msgid "" +"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)" +msgstr "" +"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)" + +#: src/strip.c:88 +msgid "Remove .comment section" +msgstr "Remove .comment section" + +#: src/strip.c:89 +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 "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." + +#: src/strip.c:90 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." + +#. Short description of program. +#: src/strip.c:97 +msgid "Discard symbols from object files." +msgstr "Discard symbols from object files." + +#: src/strip.c:245 +msgid "--reloc-debug-sections used without -f" +msgstr "--reloc-debug-sections used without -f" + +#: src/strip.c:251 +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" + +#: src/strip.c:265 +msgid "Only one input file allowed together with '-o' and '-f'" +msgstr "Only one input file allowed together with ‘-o’ and ‘-f’" + +#: src/strip.c:287 +#, c-format +msgid "-f option specified twice" +msgstr "-f option specified twice" + +#: src/strip.c:296 +#, c-format +msgid "-F option specified twice" +msgstr "-F option specified twice" + +#: src/strip.c:359 +#, c-format +msgid "cannot both keep and remove .comment section" +msgstr "cannot both keep and remove .comment section" + +#: src/strip.c:478 +msgid "bad relocation" +msgstr "bad relocation" + +#: src/strip.c:756 src/strip.c:780 +#, c-format +msgid "cannot stat input file '%s'" +msgstr "cannot stat input file ‘%s’" + +#: src/strip.c:770 +#, c-format +msgid "while opening '%s'" +msgstr "while opening ‘%s’" + +#: src/strip.c:808 +#, c-format +msgid "%s: cannot use -o or -f when stripping archive" +msgstr "%s: cannot use -o or -f when stripping archive" + +#. We would like to support ar archives, but currently it just +#. doesn't work at all since we call elf_clone on the members +#. which doesn't really support ar members. +#. result = handle_ar (fd, elf, NULL, fname, +#. preserve_dates ? tv : NULL); +#. +#: src/strip.c:820 +#, c-format +msgid "%s: no support for stripping archive" +msgstr "%s: no support for stripping archive" + +#: src/strip.c:1057 +#, c-format +msgid "cannot open EBL backend" +msgstr "cannot open EBL backend" + +#: src/strip.c:1101 +msgid "cannot get number of phdrs" +msgstr "cannot get number of phdrs" + +#: src/strip.c:1115 src/strip.c:1158 +#, c-format +msgid "cannot create new ehdr for file '%s': %s" +msgstr "cannot create new ehdr for file '%s': %s" + +#: src/strip.c:1125 src/strip.c:1168 +#, c-format +msgid "cannot create new phdr for file '%s': %s" +msgstr "cannot create new phdr for file '%s': %s" + +#: src/strip.c:1248 +#, c-format +msgid "illformed file '%s'" +msgstr "illformed file ‘%s’" + +#: src/strip.c:1258 +#, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "Cannot remove allocated section ‘%s’" + +#: src/strip.c:1267 +#, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "Cannot both keep and remove section ‘%s’" + +#: src/strip.c:1631 src/strip.c:1746 +#, c-format +msgid "while generating output file: %s" +msgstr "while generating output file: %s" + +#: src/strip.c:1695 +#, c-format +msgid "%s: error while updating ELF header: %s" +msgstr "%s: error while updating ELF header: %s" + +#: src/strip.c:1704 +#, c-format +msgid "%s: error while getting shdrstrndx: %s" +msgstr "%s: error while getting shdrstrndx: %s" + +#: src/strip.c:1712 src/strip.c:2552 +#, c-format +msgid "%s: error updating shdrstrndx: %s" +msgstr "%s: error updating shdrstrndx: %s" + +#: src/strip.c:1729 +#, c-format +msgid "while preparing output for '%s'" +msgstr "while preparing output for ‘%s’" + +#: src/strip.c:1790 src/strip.c:1852 +#, c-format +msgid "while create section header section: %s" +msgstr "while create section header section: %s" + +#: src/strip.c:1799 +#, c-format +msgid "cannot allocate section data: %s" +msgstr "cannot allocate section data: %s" + +#: src/strip.c:1863 +#, c-format +msgid "while create section header string table: %s" +msgstr "while create section header string table: %s" + +#: src/strip.c:1869 +msgid "no memory to create section header string table" +msgstr "no memory to create section header string table" + +#: src/strip.c:2082 +#, c-format +msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" +msgstr "Cannot remove symbol [%zd] from allocated symbol table [%zd]" + +#: src/strip.c:2469 src/strip.c:2574 +#, c-format +msgid "while writing '%s': %s" +msgstr "while writing '%s': %s" + +#: src/strip.c:2480 +#, c-format +msgid "while creating '%s'" +msgstr "while creating ‘%s’" + +#: src/strip.c:2503 +#, c-format +msgid "while computing checksum for debug information" +msgstr "while computing checksum for debug information" + +#: src/strip.c:2544 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "%s: error while creating ELF header: %s" + +#: src/strip.c:2560 +#, c-format +msgid "%s: error while reading the file: %s" +msgstr "%s: error while reading the file: %s" + +#: src/strip.c:2599 src/strip.c:2619 +#, c-format +msgid "while writing '%s'" +msgstr "while writing ‘%s’" + +#: src/strip.c:2656 src/strip.c:2663 +#, c-format +msgid "error while finishing '%s': %s" +msgstr "error while finishing '%s': %s" + +#: src/strip.c:2680 src/strip.c:2756 +#, c-format +msgid "cannot set access and modification date of '%s'" +msgstr "cannot set access and modification date of ‘%s’" + +#: src/unstrip.c:65 +msgid "Match MODULE against file names, not module names" +msgstr "Match MODULE against file names, not module names" + +#: src/unstrip.c:66 +msgid "Silently skip unfindable files" +msgstr "Silently skip unfindable files" + +#: src/unstrip.c:69 +msgid "Place output into FILE" +msgstr "Place output into FILE" + +#: src/unstrip.c:71 +msgid "Create multiple output files under DIRECTORY" +msgstr "Create multiple output files under DIRECTORY" + +#: src/unstrip.c:72 +msgid "Use module rather than file names" +msgstr "Use module rather than file names" + +#: src/unstrip.c:74 +msgid "Create output for modules that have no separate debug information" +msgstr "Create output for modules that have no separate debug information" + +#: src/unstrip.c:77 +msgid "Apply relocations to section contents in ET_REL files" +msgstr "Apply relocations to section contents in ET_REL files" + +#: src/unstrip.c:79 +msgid "Only list module and file names, build IDs" +msgstr "Only list module and file names, build IDs" + +#: src/unstrip.c:81 +msgid "Force combining files even if some ELF headers don't seem to match" +msgstr "Force combining files even if some ELF headers don't seem to match" + +#: src/unstrip.c:125 +#, c-format +msgid "-d option specified twice" +msgstr "-d option specified twice" + +#: src/unstrip.c:160 +#, c-format +msgid "only one of -o or -d allowed" +msgstr "only one of -o or -d allowed" + +#: src/unstrip.c:169 +#, c-format +msgid "-n cannot be used with explicit files or -o or -d" +msgstr "-n cannot be used with explicit files or -o or -d" + +#: src/unstrip.c:184 +#, c-format +msgid "output directory '%s'" +msgstr "output directory ‘%s’" + +#: src/unstrip.c:193 +#, c-format +msgid "exactly two file arguments are required" +msgstr "exactly two file arguments are required" + +#: src/unstrip.c:199 +#, c-format +msgid "-m, -a, -R, and -i options not allowed with explicit files" +msgstr "-m, -a, -R, and -i options not allowed with explicit files" + +#: src/unstrip.c:212 +#, c-format +msgid "-o or -d is required when using implicit files" +msgstr "-o or -d is required when using implicit files" + +#: src/unstrip.c:235 +#, c-format +msgid "cannot create ELF header: %s" +msgstr "cannot create ELF header: %s" + +#: src/unstrip.c:239 +#, c-format +msgid "cannot get shdrstrndx:%s" +msgstr "cannot get shdrstrndx:%s" + +#: src/unstrip.c:243 src/unstrip.c:2085 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "cannot get ELF header: %s" + +#: src/unstrip.c:253 +#, c-format +msgid "cannot get new zero section: %s" +msgstr "cannot get new zero section: %s" + +#: src/unstrip.c:256 +#, c-format +msgid "cannot update new zero section: %s" +msgstr "cannot update new zero section: %s" + +#: src/unstrip.c:260 +#, c-format +msgid "cannot copy ELF header: %s" +msgstr "cannot copy ELF header: %s" + +#: src/unstrip.c:264 src/unstrip.c:2103 src/unstrip.c:2146 +#, c-format +msgid "cannot get number of program headers: %s" +msgstr "cannot get number of program headers: %s" + +#: src/unstrip.c:269 src/unstrip.c:2107 +#, c-format +msgid "cannot create program headers: %s" +msgstr "cannot create program headers: %s" + +#: src/unstrip.c:275 +#, c-format +msgid "cannot copy program header: %s" +msgstr "cannot copy program header: %s" + +#: src/unstrip.c:285 +#, c-format +msgid "cannot copy section header: %s" +msgstr "cannot copy section header: %s" + +#: src/unstrip.c:288 src/unstrip.c:1707 +#, c-format +msgid "cannot get section data: %s" +msgstr "cannot get section data: %s" + +#: src/unstrip.c:290 src/unstrip.c:1709 +#, c-format +msgid "cannot copy section data: %s" +msgstr "cannot copy section data: %s" + +#: src/unstrip.c:318 +#, c-format +msgid "cannot create directory '%s'" +msgstr "cannot create directory ‘%s’" + +#: src/unstrip.c:392 src/unstrip.c:657 src/unstrip.c:691 src/unstrip.c:859 +#: src/unstrip.c:1749 +#, c-format +msgid "cannot get symbol table entry: %s" +msgstr "cannot get symbol table entry: %s" + +#: src/unstrip.c:408 src/unstrip.c:660 src/unstrip.c:681 src/unstrip.c:694 +#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989 +#, c-format +msgid "cannot update symbol table: %s" +msgstr "cannot update symbol table: %s" + +#: src/unstrip.c:418 +#, c-format +msgid "cannot update section header: %s" +msgstr "cannot update section header: %s" + +#: src/unstrip.c:464 +#, c-format +msgid "gelf_getrel failed: %s" +msgstr "gelf_getrel failed: %s" + +#: src/unstrip.c:467 src/unstrip.c:482 +#, c-format +msgid "cannot update relocation: %s" +msgstr "cannot update relocation: %s" + +#: src/unstrip.c:479 +#, c-format +msgid "gelf_getrela failed: %s" +msgstr "gelf_getrela failed: %s" + +#: src/unstrip.c:580 +#, c-format +msgid "cannot get symbol version: %s" +msgstr "cannot get symbol version: %s" + +#: src/unstrip.c:593 +#, c-format +msgid "unexpected section type in [%zu] with sh_link to symtab" +msgstr "unexpected section type in [%zu] with sh_link to symtab" + +#: src/unstrip.c:848 +#, c-format +msgid "cannot get symbol section data: %s" +msgstr "cannot get symbol section data: %s" + +#: src/unstrip.c:850 +#, c-format +msgid "cannot get string section data: %s" +msgstr "cannot get string section data: %s" + +#: src/unstrip.c:867 +#, c-format +msgid "invalid string offset in symbol [%zu]" +msgstr "invalid string offset in symbol [%zu]" + +#: src/unstrip.c:1025 src/unstrip.c:1433 +#, c-format +msgid "cannot read section [%zu] name: %s" +msgstr "cannot read section [%zu] name: %s" + +#: src/unstrip.c:1040 +#, c-format +msgid "bad sh_link for group section: %s" +msgstr "bad sh_link for group section: %s" + +#: src/unstrip.c:1046 +#, c-format +msgid "couldn't get shdr for group section: %s" +msgstr "couldn't get shdr for group section: %s" + +#: src/unstrip.c:1051 +#, c-format +msgid "bad data for group symbol section: %s" +msgstr "bad data for group symbol section: %s" + +#: src/unstrip.c:1057 +#, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "couldn't get symbol for group section: %s" + +#: src/unstrip.c:1062 +#, c-format +msgid "bad symbol name for group section: %s" +msgstr "bad symbol name for group section: %s" + +#: src/unstrip.c:1073 src/unstrip.c:1553 +#, c-format +msgid "cannot find matching section for [%zu] '%s'" +msgstr "cannot find matching section for [%zu] ‘%s’" + +#: src/unstrip.c:1118 src/unstrip.c:1137 src/unstrip.c:1175 +#, c-format +msgid "cannot read '.gnu.prelink_undo' section: %s" +msgstr "cannot read ‘.gnu.prelink_undo’ section: %s" + +#: src/unstrip.c:1155 +#, c-format +msgid "overflow with shnum = %zu in '%s' section" +msgstr "overflow with shnum = %zu in ‘%s’ section" + +#: src/unstrip.c:1166 +#, c-format +msgid "invalid contents in '%s' section" +msgstr "invalid contents in ‘%s’ section" + +#: src/unstrip.c:1337 src/unstrip.c:1353 src/unstrip.c:1633 src/unstrip.c:1924 +#, c-format +msgid "cannot add section name to string table: %s" +msgstr "cannot add section name to string table: %s" + +#: src/unstrip.c:1362 +#, c-format +msgid "cannot update section header string table data: %s" +msgstr "cannot update section header string table data: %s" + +#: src/unstrip.c:1391 src/unstrip.c:1395 +#, c-format +msgid "cannot get section header string table section index: %s" +msgstr "cannot get section header string table section index: %s" + +#: src/unstrip.c:1399 src/unstrip.c:1403 src/unstrip.c:1648 +#, c-format +msgid "cannot get section count: %s" +msgstr "cannot get section count: %s" + +#: src/unstrip.c:1406 +msgid "more sections in stripped file than debug file -- arguments reversed?" +msgstr "more sections in stripped file than debug file -- arguments reversed?" + +#: src/unstrip.c:1410 +msgid "no sections in stripped file" +msgstr "no sections in stripped file" + +#: src/unstrip.c:1458 src/unstrip.c:1568 +#, c-format +msgid "cannot read section header string table: %s" +msgstr "cannot read section header string table: %s" + +#: src/unstrip.c:1627 +#, c-format +msgid "cannot add new section: %s" +msgstr "cannot add new section: %s" + +#: src/unstrip.c:1757 +#, c-format +msgid "symbol [%zu] has invalid section index" +msgstr "symbol [%zu] has invalid section index" + +#: src/unstrip.c:1789 +#, c-format +msgid "group has invalid section index [%zd]" +msgstr "group has invalid section index [%zd]" + +#: src/unstrip.c:2064 +#, c-format +msgid "cannot read section data: %s" +msgstr "cannot read section data: %s" + +#: src/unstrip.c:2093 +#, c-format +msgid "cannot update ELF header: %s" +msgstr "cannot update ELF header: %s" + +#: src/unstrip.c:2117 +#, c-format +msgid "cannot update program header: %s" +msgstr "cannot update program header: %s" + +#: src/unstrip.c:2122 src/unstrip.c:2205 +#, c-format +msgid "cannot write output file: %s" +msgstr "cannot write output file: %s" + +#: src/unstrip.c:2173 +#, c-format +msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" +msgstr "DWARF data not adjusted for prelinking bias; consider prelink -u" + +#: src/unstrip.c:2176 +#, c-format +msgid "" +"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" +msgstr "" +"DWARF data in ‘%s’ not adjusted for prelinking bias; consider prelink -" +"u" + +#: src/unstrip.c:2196 src/unstrip.c:2248 src/unstrip.c:2260 src/unstrip.c:2350 +#, c-format +msgid "cannot create ELF descriptor: %s" +msgstr "cannot create ELF descriptor: %s" + +#: src/unstrip.c:2234 +msgid "WARNING: " +msgstr "WARNING: " + +#: src/unstrip.c:2236 +msgid ", use --force" +msgstr ", use --force" + +#: src/unstrip.c:2264 +msgid "ELF header identification (e_ident) different" +msgstr "ELF header identification (e_ident) different" + +#: src/unstrip.c:2268 +msgid "ELF header type (e_type) different" +msgstr "ELF header type (e_type) different" + +#: src/unstrip.c:2272 +msgid "ELF header machine type (e_machine) different" +msgstr "ELF header machine type (e_machine) different" + +#: src/unstrip.c:2276 +msgid "stripped program header (e_phnum) smaller than unstripped" +msgstr "stripped program header (e_phnum) smaller than unstripped" + +#: src/unstrip.c:2307 +#, c-format +msgid "cannot find stripped file for module '%s': %s" +msgstr "cannot find stripped file for module '%s': %s" + +#: src/unstrip.c:2311 +#, c-format +msgid "cannot open stripped file '%s' for module '%s': %s" +msgstr "cannot open stripped file ‘%s’ for module '%s': %s" + +#: src/unstrip.c:2326 +#, c-format +msgid "cannot find debug file for module '%s': %s" +msgstr "cannot find debug file for module '%s': %s" + +#: src/unstrip.c:2330 +#, c-format +msgid "cannot open debug file '%s' for module '%s': %s" +msgstr "cannot open debug file ‘%s’ for module '%s': %s" + +#: src/unstrip.c:2343 +#, c-format +msgid "module '%s' file '%s' is not stripped" +msgstr "module ‘%s’ file ‘%s’ is not stripped" + +#: src/unstrip.c:2374 +#, c-format +msgid "cannot cache section addresses for module '%s': %s" +msgstr "cannot cache section addresses for module '%s': %s" + +#: src/unstrip.c:2502 +msgid "no matching modules found" +msgstr "no matching modules found" + +#: src/unstrip.c:2512 +msgid "matched more than one module" +msgstr "matched more than one module" + +#: src/unstrip.c:2557 +msgid "" +"STRIPPED-FILE DEBUG-FILE\n" +"[MODULE...]" +msgstr "" +"STRIPPED-FILE DEBUG-FILE\n" +"[MODULE...]" + +#: src/unstrip.c:2558 +msgid "" +"Combine stripped files with separate symbols and debug information.\n" +"\n" +"The 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 "" +"Combine stripped files with separate symbols and debug information.\n" +"\n" +"The 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." + +#. Short description of program. +#: debuginfod/debuginfod-find.c:42 +msgid "Request debuginfo-related content from debuginfods listed in $" +msgstr "Request debuginfo-related content from debuginfods listed in $" + +#. Strings for arguments in help texts. +#: debuginfod/debuginfod-find.c:46 +msgid "" +"debuginfo BUILDID\n" +"debuginfo PATH\n" +"executable BUILDID\n" +"executable PATH\n" +"source BUILDID /FILENAME\n" +"source PATH /FILENAME\n" +"section BUILDID SECTION-NAME\n" +"section PATH SECTION-NAME\n" +msgstr "" +"debuginfo BUILDID\n" +"debuginfo PATH\n" +"executable BUILDID\n" +"executable PATH\n" +"source BUILDID /FILENAME\n" +"source PATH /FILENAME\n" +"section BUILDID SECTION-NAME\n" +"section PATH SECTION-NAME\n" + +#: tests/backtrace.c:491 +msgid "Run executable" +msgstr "Run executable" + +#: tests/dwflmodtest.c:209 +msgid "Additionally show function names" +msgstr "Additionally show function names" + +#: tests/dwflmodtest.c:210 +msgid "Show instances of inlined functions" +msgstr "Show instances of inlined functions" diff --git a/po/en@quot.gmo b/po/en@quot.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d8524822e417e7aa70405bce10fd7c5a7e8dfd6d Binary files /dev/null and b/po/en@quot.gmo differ diff --git a/po/en@quot.header b/po/en@quot.header new file mode 100644 index 0000000000000000000000000000000000000000..6522f0ce0180220c65a42266db435ed166b9dab3 --- /dev/null +++ b/po/en@quot.header @@ -0,0 +1,22 @@ +# 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 +# https://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/en@quot.po b/po/en@quot.po new file mode 100644 index 0000000000000000000000000000000000000000..67ac7eac64e1078347be517a05a21d15b3aa3f5c --- /dev/null +++ b/po/en@quot.po @@ -0,0 +1,7364 @@ +# English translations for elfutils package. +# Copyright (C) 2023 The elfutils developers +# This file is distributed under the same license as the elfutils package. +# Automatically generated, 2023. +# +# 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 +# https://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. +# +msgid "" +msgstr "" +"Project-Id-Version: elfutils 0.190\n" +"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" +"PO-Revision-Date: 2023-11-03 18:23+0100\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: en@quot\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/color.c:51 +msgid "" +"colorize the output. WHEN defaults to 'always' or can be 'auto' or 'never'" +msgstr "" +"colorize the output. WHEN defaults to ‘always’ or can be ‘auto’ or ‘never’" + +#: lib/color.c:127 +#, c-format +msgid "" +"%s: invalid argument '%s' for '--color'\n" +"valid arguments are:\n" +" - 'always', 'yes', 'force'\n" +" - 'never', 'no', 'none'\n" +" - 'auto', 'tty', 'if-tty'\n" +msgstr "" +"%s: invalid argument ‘%s’ for ‘--color’\n" +"valid arguments are:\n" +" - 'always', 'yes', ‘force’\n" +" - 'never', 'no', ‘none’\n" +" - 'auto', 'tty', ‘if-tty’\n" + +#: lib/printversion.c:39 +#, 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 "" +"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" + +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 +#: src/unstrip.c:311 +#, c-format +msgid "memory exhausted" +msgstr "memory exhausted" + +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 +#: libelf/elf_error.c:59 +msgid "no error" +msgstr "no error" + +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 +#: libelf/elf_error.c:90 +msgid "out of memory" +msgstr "out of memory" + +#: libasm/asm_error.c:66 +msgid "cannot create output file" +msgstr "cannot create output file" + +#: libasm/asm_error.c:67 +msgid "invalid parameter" +msgstr "invalid parameter" + +#: libasm/asm_error.c:68 +msgid "cannot change mode of output file" +msgstr "cannot change mode of output file" + +#: libasm/asm_error.c:69 +msgid "cannot rename output file" +msgstr "cannot rename output file" + +#: libasm/asm_error.c:70 +msgid "duplicate symbol" +msgstr "duplicate symbol" + +#: libasm/asm_error.c:71 +msgid "invalid section type for operation" +msgstr "invalid section type for operation" + +#: libasm/asm_error.c:72 +msgid "error during output of data" +msgstr "error during output of data" + +#: libasm/asm_error.c:73 +msgid "no backend support available" +msgstr "no backend support available" + +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 +#: libelf/elf_error.c:62 +msgid "unknown error" +msgstr "unknown error" + +#: libcpu/i386_lex.l:121 +#, c-format +msgid "invalid character '%c' at line %d; ignored" +msgstr "invalid character ‘%c’ at line %d; ignored" + +#: libcpu/i386_lex.l:122 +#, c-format +msgid "invalid character '\\%o' at line %d; ignored" +msgstr "invalid character ‘\\%o’ at line %d; ignored" + +#: libcpu/i386_parse.y:555 +#, c-format +msgid "while reading i386 CPU description: %s at line %d" +msgstr "while reading i386 CPU description: %s at line %d" + +#: libdw/dwarf_error.c:59 +msgid "invalid access" +msgstr "invalid access" + +#: libdw/dwarf_error.c:60 +msgid "no regular file" +msgstr "no regular file" + +#: libdw/dwarf_error.c:61 +msgid "I/O error" +msgstr "I/O error" + +#: libdw/dwarf_error.c:62 +msgid "invalid ELF file" +msgstr "invalid ELF file" + +#: libdw/dwarf_error.c:63 +msgid "no DWARF information" +msgstr "no DWARF information" + +#: libdw/dwarf_error.c:64 +msgid "cannot decompress DWARF" +msgstr "cannot decompress DWARF" + +#: libdw/dwarf_error.c:65 +msgid "no ELF file" +msgstr "no ELF file" + +#: libdw/dwarf_error.c:66 +msgid "cannot get ELF header" +msgstr "cannot get ELF header" + +#: libdw/dwarf_error.c:68 +msgid "not implemented" +msgstr "not implemented" + +#: libdw/dwarf_error.c:69 libelf/elf_error.c:110 libelf/elf_error.c:158 +msgid "invalid command" +msgstr "invalid command" + +#: libdw/dwarf_error.c:70 +msgid "invalid version" +msgstr "invalid version" + +#: libdw/dwarf_error.c:71 +msgid "invalid file" +msgstr "invalid file" + +#: libdw/dwarf_error.c:72 +msgid "no entries found" +msgstr "no entries found" + +#: libdw/dwarf_error.c:73 +msgid "invalid DWARF" +msgstr "invalid DWARF" + +#: libdw/dwarf_error.c:74 +msgid "no string data" +msgstr "no string data" + +#: libdw/dwarf_error.c:75 +msgid ".debug_str section missing" +msgstr ".debug_str section missing" + +#: libdw/dwarf_error.c:76 +msgid ".debug_line_str section missing" +msgstr ".debug_line_str section missing" + +#: libdw/dwarf_error.c:77 +msgid ".debug_str_offsets section missing" +msgstr ".debug_str_offsets section missing" + +#: libdw/dwarf_error.c:78 +msgid "no address value" +msgstr "no address value" + +#: libdw/dwarf_error.c:79 +msgid "no constant value" +msgstr "no constant value" + +#: libdw/dwarf_error.c:80 +msgid "no reference value" +msgstr "no reference value" + +#: libdw/dwarf_error.c:81 +msgid "invalid reference value" +msgstr "invalid reference value" + +#: libdw/dwarf_error.c:82 +msgid ".debug_line section missing" +msgstr ".debug_line section missing" + +#: libdw/dwarf_error.c:83 +msgid "invalid .debug_line section" +msgstr "invalid .debug_line section" + +#: libdw/dwarf_error.c:84 +msgid "debug information too big" +msgstr "debug information too big" + +#: libdw/dwarf_error.c:85 +msgid "invalid DWARF version" +msgstr "invalid DWARF version" + +#: libdw/dwarf_error.c:86 +msgid "invalid directory index" +msgstr "invalid directory index" + +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 +msgid "address out of range" +msgstr "address out of range" + +#: libdw/dwarf_error.c:88 +msgid ".debug_loc section missing" +msgstr ".debug_loc section missing" + +#: libdw/dwarf_error.c:89 +msgid ".debug_loclists section missing" +msgstr ".debug_loclists section missing" + +#: libdw/dwarf_error.c:90 +msgid "not a location list value" +msgstr "not a location list value" + +#: libdw/dwarf_error.c:91 +msgid "no block data" +msgstr "no block data" + +#: libdw/dwarf_error.c:92 +msgid "invalid line index" +msgstr "invalid line index" + +#: libdw/dwarf_error.c:93 +msgid "invalid address range index" +msgstr "invalid address range index" + +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 +msgid "no matching address range" +msgstr "no matching address range" + +#: libdw/dwarf_error.c:95 +msgid "no flag value" +msgstr "no flag value" + +#: libdw/dwarf_error.c:96 libelf/elf_error.c:235 +msgid "invalid offset" +msgstr "invalid offset" + +#: libdw/dwarf_error.c:97 +msgid ".debug_ranges section missing" +msgstr ".debug_ranges section missing" + +#: libdw/dwarf_error.c:98 +msgid ".debug_rnglists section missing" +msgstr ".debug_rnglists section missing" + +#: libdw/dwarf_error.c:99 +msgid "invalid CFI section" +msgstr "invalid CFI section" + +#: libdw/dwarf_error.c:100 +msgid "no alternative debug link found" +msgstr "no alternative debug link found" + +#: libdw/dwarf_error.c:101 +msgid "invalid opcode" +msgstr "invalid opcode" + +#: libdw/dwarf_error.c:102 +msgid "not a CU (unit) DIE" +msgstr "not a CU (unit) DIE" + +#: libdw/dwarf_error.c:103 +msgid "unknown language code" +msgstr "unknown language code" + +#: libdw/dwarf_error.c:104 +msgid ".debug_addr section missing" +msgstr ".debug_addr section missing" + +#: libdwfl/argp-std.c:45 src/stack.c:643 src/unstrip.c:2547 +msgid "Input selection options:" +msgstr "Input selection options:" + +#: libdwfl/argp-std.c:46 +msgid "Find addresses in FILE" +msgstr "Find addresses in FILE" + +#: libdwfl/argp-std.c:48 +msgid "Find addresses from signatures found in COREFILE" +msgstr "Find addresses from signatures found in COREFILE" + +#: libdwfl/argp-std.c:50 +msgid "Find addresses in files mapped into process PID" +msgstr "Find addresses in files mapped into process PID" + +#: libdwfl/argp-std.c:52 +msgid "" +"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps " +"format" +msgstr "" +"Find addresses in files mapped as read from FILE in Linux /proc/PID/maps " +"format" + +#: libdwfl/argp-std.c:54 +msgid "Find addresses in the running kernel" +msgstr "Find addresses in the running kernel" + +#: libdwfl/argp-std.c:56 +msgid "Kernel with all modules" +msgstr "Kernel with all modules" + +#: libdwfl/argp-std.c:58 src/stack.c:650 +msgid "Search path for separate debuginfo files" +msgstr "Search path for separate debuginfo files" + +#: libdwfl/argp-std.c:159 +msgid "only one of -e, -p, -k, -K, or --core allowed" +msgstr "only one of -e, -p, -k, -K, or --core allowed" + +#: libdwfl/argp-std.c:232 +msgid "cannot load kernel symbols" +msgstr "cannot load kernel symbols" + +#. Non-fatal to have no modules since we do have the kernel. +#: libdwfl/argp-std.c:236 +msgid "cannot find kernel modules" +msgstr "cannot find kernel modules" + +#: libdwfl/argp-std.c:253 +msgid "cannot find kernel or modules" +msgstr "cannot find kernel or modules" + +#: libdwfl/argp-std.c:292 +#, c-format +msgid "cannot read ELF core file: %s" +msgstr "cannot read ELF core file: %s" + +#: libdwfl/argp-std.c:315 +msgid "Not enough memory" +msgstr "Not enough memory" + +#: libdwfl/argp-std.c:325 +msgid "No modules recognized in core file" +msgstr "No modules recognized in core file" + +#: libdwfl/libdwflP.h:50 +msgid "See errno" +msgstr "See errno" + +#: libdwfl/libdwflP.h:51 +msgid "See elf_errno" +msgstr "See elf_errno" + +#: libdwfl/libdwflP.h:52 +msgid "See dwarf_errno" +msgstr "See dwarf_errno" + +#: libdwfl/libdwflP.h:53 +msgid "See ebl_errno (XXX missing)" +msgstr "See ebl_errno (XXX missing)" + +#: libdwfl/libdwflP.h:54 +msgid "gzip decompression failed" +msgstr "gzip decompression failed" + +#: libdwfl/libdwflP.h:55 +msgid "bzip2 decompression failed" +msgstr "bzip2 decompression failed" + +#: libdwfl/libdwflP.h:56 +msgid "LZMA decompression failed" +msgstr "LZMA decompression failed" + +#: libdwfl/libdwflP.h:57 +msgid "zstd decompression failed" +msgstr "zstd decompression failed" + +#: libdwfl/libdwflP.h:58 +msgid "no support library found for machine" +msgstr "no support library found for machine" + +#: libdwfl/libdwflP.h:59 +msgid "Callbacks missing for ET_REL file" +msgstr "Callbacks missing for ET_REL file" + +#: libdwfl/libdwflP.h:60 +msgid "Unsupported relocation type" +msgstr "Unsupported relocation type" + +#: libdwfl/libdwflP.h:61 +msgid "r_offset is bogus" +msgstr "r_offset is bogus" + +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 +msgid "offset out of range" +msgstr "offset out of range" + +#: libdwfl/libdwflP.h:63 +msgid "relocation refers to undefined symbol" +msgstr "relocation refers to undefined symbol" + +#: libdwfl/libdwflP.h:64 +msgid "Callback returned failure" +msgstr "Callback returned failure" + +#: libdwfl/libdwflP.h:65 +msgid "No DWARF information found" +msgstr "No DWARF information found" + +#: libdwfl/libdwflP.h:66 +msgid "No symbol table found" +msgstr "No symbol table found" + +#: libdwfl/libdwflP.h:67 +msgid "No ELF program headers" +msgstr "No ELF program headers" + +#: libdwfl/libdwflP.h:68 +msgid "address range overlaps an existing module" +msgstr "address range overlaps an existing module" + +#: libdwfl/libdwflP.h:71 +msgid "image truncated" +msgstr "image truncated" + +#: libdwfl/libdwflP.h:72 +msgid "ELF file opened" +msgstr "ELF file opened" + +#: libdwfl/libdwflP.h:73 +msgid "not a valid ELF file" +msgstr "not a valid ELF file" + +#: libdwfl/libdwflP.h:74 +msgid "cannot handle DWARF type description" +msgstr "cannot handle DWARF type description" + +#: libdwfl/libdwflP.h:75 +msgid "ELF file does not match build ID" +msgstr "ELF file does not match build ID" + +#: libdwfl/libdwflP.h:76 +msgid "corrupt .gnu.prelink_undo section data" +msgstr "corrupt .gnu.prelink_undo section data" + +#: libdwfl/libdwflP.h:77 +msgid "Internal error due to ebl" +msgstr "Internal error due to ebl" + +#: libdwfl/libdwflP.h:78 +msgid "Missing data in core file" +msgstr "Missing data in core file" + +#: libdwfl/libdwflP.h:79 +msgid "Invalid register" +msgstr "Invalid register" + +#: libdwfl/libdwflP.h:80 +msgid "Unknown register value" +msgstr "Unknown register value" + +#: libdwfl/libdwflP.h:81 +msgid "Error reading process memory" +msgstr "Error reading process memory" + +#: libdwfl/libdwflP.h:82 +msgid "Couldn't find architecture of any ELF" +msgstr "Couldn't find architecture of any ELF" + +#: libdwfl/libdwflP.h:83 +msgid "Error parsing /proc filesystem" +msgstr "Error parsing /proc filesystem" + +#: libdwfl/libdwflP.h:84 +msgid "Invalid DWARF" +msgstr "Invalid DWARF" + +#: libdwfl/libdwflP.h:85 +msgid "Unsupported DWARF" +msgstr "Unsupported DWARF" + +#: libdwfl/libdwflP.h:86 +msgid "Unable to find more threads" +msgstr "Unable to find more threads" + +#: libdwfl/libdwflP.h:87 +msgid "Dwfl already has attached state" +msgstr "Dwfl already has attached state" + +#: libdwfl/libdwflP.h:88 +msgid "Dwfl has no attached state" +msgstr "Dwfl has no attached state" + +#: libdwfl/libdwflP.h:89 +msgid "Unwinding not supported for this architecture" +msgstr "Unwinding not supported for this architecture" + +#: libdwfl/libdwflP.h:90 +msgid "Invalid argument" +msgstr "Invalid argument" + +#: libdwfl/libdwflP.h:91 +msgid "Not an ET_CORE ELF file" +msgstr "Not an ET_CORE ELF file" + +#: libebl/eblbackendname.c:41 +msgid "No backend" +msgstr "No backend" + +#: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 +#: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 +#: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 +msgid "" +msgstr "" + +#: libebl/ebldynamictagname.c:103 +#, c-format +msgid ": %#" +msgstr ": %#" + +#: libebl/eblobjnote.c:58 +#, c-format +msgid "unknown SDT version %u\n" +msgstr "unknown SDT version %u\n" + +#: libebl/eblobjnote.c:76 +#, c-format +msgid "invalid SDT probe descriptor\n" +msgstr "invalid SDT probe descriptor\n" + +#: libebl/eblobjnote.c:126 +#, c-format +msgid " PC: " +msgstr " PC: " + +#: libebl/eblobjnote.c:128 +#, c-format +msgid " Base: " +msgstr " Base: " + +#: libebl/eblobjnote.c:130 +#, c-format +msgid " Semaphore: " +msgstr " Semaphore: " + +#: libebl/eblobjnote.c:132 +#, c-format +msgid " Provider: " +msgstr " Provider: " + +#: libebl/eblobjnote.c:134 +#, c-format +msgid " Name: " +msgstr " Name: " + +#: libebl/eblobjnote.c:136 +#, c-format +msgid " Args: " +msgstr " Args: " + +#: libebl/eblobjnote.c:304 +#, c-format +msgid " Build ID: " +msgstr " Build ID: " + +#. A non-null terminated version string. +#: libebl/eblobjnote.c:315 +#, c-format +msgid " Linker version: %.*s\n" +msgstr " Linker version: %.*s\n" + +#: libebl/eblobjnote.c:642 +#, c-format +msgid " OS: %s, ABI: " +msgstr " OS: %s, ABI: " + +#: libebl/eblosabiname.c:70 +msgid "Stand alone" +msgstr "Stand alone" + +#: libebl/eblsymbolbindingname.c:68 libebl/eblsymboltypename.c:74 +#, c-format +msgid ": %d" +msgstr ": %d" + +#: libelf/elf_error.c:66 +msgid "unknown version" +msgstr "unknown version" + +#: libelf/elf_error.c:70 +msgid "unknown type" +msgstr "unknown type" + +#: libelf/elf_error.c:74 +msgid "invalid `Elf' handle" +msgstr "invalid ‘Elf’ handle" + +#: libelf/elf_error.c:78 +msgid "invalid size of source operand" +msgstr "invalid size of source operand" + +#: libelf/elf_error.c:82 +msgid "invalid size of destination operand" +msgstr "invalid size of destination operand" + +#: libelf/elf_error.c:86 src/readelf.c:6758 +#, c-format +msgid "invalid encoding" +msgstr "invalid encoding" + +#: libelf/elf_error.c:94 +msgid "invalid file descriptor" +msgstr "invalid file descriptor" + +#: libelf/elf_error.c:98 +msgid "invalid ELF file data" +msgstr "invalid ELF file data" + +#: libelf/elf_error.c:102 +msgid "invalid operation" +msgstr "invalid operation" + +#: libelf/elf_error.c:106 +msgid "ELF version not set" +msgstr "ELF version not set" + +#: libelf/elf_error.c:118 +msgid "invalid fmag field in archive header" +msgstr "invalid fmag field in archive header" + +#: libelf/elf_error.c:122 +msgid "invalid archive file" +msgstr "invalid archive file" + +#: libelf/elf_error.c:126 +msgid "descriptor is not for an archive" +msgstr "descriptor is not for an archive" + +#: libelf/elf_error.c:130 +msgid "no index available" +msgstr "no index available" + +#: libelf/elf_error.c:134 +msgid "cannot read data from file" +msgstr "cannot read data from file" + +#: libelf/elf_error.c:138 +msgid "cannot write data to file" +msgstr "cannot write data to file" + +#: libelf/elf_error.c:142 +msgid "invalid binary class" +msgstr "invalid binary class" + +#: libelf/elf_error.c:146 +msgid "invalid section index" +msgstr "invalid section index" + +#: libelf/elf_error.c:150 +msgid "invalid operand" +msgstr "invalid operand" + +#: libelf/elf_error.c:154 +msgid "invalid section" +msgstr "invalid section" + +#: libelf/elf_error.c:162 +msgid "executable header not created first" +msgstr "executable header not created first" + +#: libelf/elf_error.c:166 +msgid "file descriptor disabled" +msgstr "file descriptor disabled" + +#: libelf/elf_error.c:170 +msgid "archive/member file descriptor mismatch" +msgstr "archive/member file descriptor mismatch" + +#: libelf/elf_error.c:178 +msgid "cannot manipulate null section" +msgstr "cannot manipulate null section" + +#: libelf/elf_error.c:182 +msgid "data/scn mismatch" +msgstr "data/scn mismatch" + +#: libelf/elf_error.c:186 +msgid "invalid section header" +msgstr "invalid section header" + +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 +#, c-format +msgid "invalid data" +msgstr "invalid data" + +#: libelf/elf_error.c:194 +msgid "unknown data encoding" +msgstr "unknown data encoding" + +#: libelf/elf_error.c:198 +msgid "section `sh_size' too small for data" +msgstr "section ‘sh_size’ too small for data" + +#: libelf/elf_error.c:202 +msgid "invalid section alignment" +msgstr "invalid section alignment" + +#: libelf/elf_error.c:206 +msgid "invalid section entry size" +msgstr "invalid section entry size" + +#: libelf/elf_error.c:210 +msgid "update() for write on read-only file" +msgstr "update() for write on read-only file" + +#: libelf/elf_error.c:214 +msgid "no such file" +msgstr "no such file" + +#: libelf/elf_error.c:218 +msgid "only relocatable files can contain section groups" +msgstr "only relocatable files can contain section groups" + +#: libelf/elf_error.c:223 +msgid "" +"program header only allowed in executables, shared objects, and core files" +msgstr "" +"program header only allowed in executables, shared objects, and core files" + +#: libelf/elf_error.c:230 +msgid "file has no program header" +msgstr "file has no program header" + +#: libelf/elf_error.c:240 +msgid "invalid section type" +msgstr "invalid section type" + +#: libelf/elf_error.c:245 +msgid "invalid section flags" +msgstr "invalid section flags" + +#: libelf/elf_error.c:250 +msgid "section does not contain compressed data" +msgstr "section does not contain compressed data" + +#: libelf/elf_error.c:255 +msgid "section contains compressed data" +msgstr "section contains compressed data" + +#: libelf/elf_error.c:260 +msgid "unknown compression type" +msgstr "unknown compression type" + +#: libelf/elf_error.c:265 +msgid "cannot compress data" +msgstr "cannot compress data" + +#: libelf/elf_error.c:270 +msgid "cannot decompress data" +msgstr "cannot decompress data" + +#: src/addr2line.c:58 +msgid "Input format options:" +msgstr "Input format options:" + +#: src/addr2line.c:60 +msgid "Treat addresses as offsets relative to NAME section." +msgstr "Treat addresses as offsets relative to NAME section." + +#: src/addr2line.c:62 +msgid "Output format options:" +msgstr "Output format options:" + +#: src/addr2line.c:63 +msgid "Print address before each entry" +msgstr "Print address before each entry" + +#: src/addr2line.c:64 +msgid "Show only base names of source files" +msgstr "Show only base names of source files" + +#: src/addr2line.c:66 +msgid "Show absolute file names using compilation directory (default)" +msgstr "Show absolute file names using compilation directory (default)" + +#: src/addr2line.c:67 +msgid "Also show function names" +msgstr "Also show function names" + +#: src/addr2line.c:68 +msgid "Also show symbol or section names" +msgstr "Also show symbol or section names" + +#: src/addr2line.c:69 +msgid "Also show symbol and the section names" +msgstr "Also show symbol and the section names" + +#: src/addr2line.c:70 +msgid "Also show line table flags" +msgstr "Also show line table flags" + +#: src/addr2line.c:72 +msgid "" +"Show all source locations that caused inline expansion of subroutines at the " +"address." +msgstr "" +"Show all source locations that caused inline expansion of subroutines at the " +"address." + +#: src/addr2line.c:75 +msgid "Show demangled symbols (ARG is always ignored)" +msgstr "Show demangled symbols (ARG is always ignored)" + +#: src/addr2line.c:76 +msgid "Show demangled symbols" +msgstr "Show demangled symbols" + +#: src/addr2line.c:78 +msgid "Print all information on one line, and indent inlines" +msgstr "Print all information on one line, and indent inlines" + +#: src/addr2line.c:80 +msgid "Show relative file names without compilation directory" +msgstr "Show relative file names without compilation directory" + +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/strings.c:77 +msgid "Miscellaneous:" +msgstr "Miscellaneous:" + +#. Short description of program. +#: src/addr2line.c:90 +msgid "" +"Locate source files and line information for ADDRs (in a.out by default)." +msgstr "" +"Locate source files and line information for ADDRs (in a.out by default)." + +#. Strings for arguments in help texts. +#: src/addr2line.c:94 +msgid "[ADDR...]" +msgstr "[ADDR...]" + +#: src/addr2line.c:530 +msgid "Section syntax requires exactly one module" +msgstr "Section syntax requires exactly one module" + +#: src/addr2line.c:552 +#, c-format +msgid "offset %# lies outside section '%s'" +msgstr "offset %# lies outside section ‘%s’" + +#: src/addr2line.c:662 +#, c-format +msgid "cannot find symbol '%s'" +msgstr "cannot find symbol ‘%s’" + +#: src/addr2line.c:667 +#, c-format +msgid "offset %# lies outside contents of '%s'" +msgstr "offset %# lies outside contents of ‘%s’" + +#: src/ar.c:66 +msgid "Commands:" +msgstr "Commands:" + +#: src/ar.c:67 +msgid "Delete files from archive." +msgstr "Delete files from archive." + +#: src/ar.c:68 +msgid "Move files in archive." +msgstr "Move files in archive." + +#: src/ar.c:69 +msgid "Print files in archive." +msgstr "Print files in archive." + +#: src/ar.c:70 +msgid "Quick append files to archive." +msgstr "Quick append files to archive." + +#: src/ar.c:72 +msgid "Replace existing or insert new file into archive." +msgstr "Replace existing or insert new file into archive." + +#: src/ar.c:73 +msgid "Display content of archive." +msgstr "Display content of archive." + +#: src/ar.c:74 +msgid "Extract files from archive." +msgstr "Extract files from archive." + +#: src/ar.c:76 +msgid "Command Modifiers:" +msgstr "Command Modifiers:" + +#: src/ar.c:77 +msgid "Preserve original dates." +msgstr "Preserve original dates." + +#: src/ar.c:78 +msgid "Use instance [COUNT] of name." +msgstr "Use instance [COUNT] of name." + +#: src/ar.c:80 +msgid "Do not replace existing files with extracted files." +msgstr "Do not replace existing files with extracted files." + +#: src/ar.c:81 +msgid "Allow filename to be truncated if necessary." +msgstr "Allow filename to be truncated if necessary." + +#: src/ar.c:83 +msgid "Provide verbose output." +msgstr "Provide verbose output." + +#: src/ar.c:84 +msgid "Force regeneration of symbol table." +msgstr "Force regeneration of symbol table." + +#: src/ar.c:85 +msgid "Insert file after [MEMBER]." +msgstr "Insert file after [MEMBER]." + +#: src/ar.c:86 +msgid "Insert file before [MEMBER]." +msgstr "Insert file before [MEMBER]." + +#: src/ar.c:87 +msgid "Same as -b." +msgstr "Same as -b." + +#: src/ar.c:88 +msgid "Suppress message when library has to be created." +msgstr "Suppress message when library has to be created." + +#: src/ar.c:90 +msgid "Use full path for file matching." +msgstr "Use full path for file matching." + +#: src/ar.c:91 +msgid "Update only older files in archive." +msgstr "Update only older files in archive." + +#. Short description of program. +#: src/ar.c:97 +msgid "Create, modify, and extract from archives." +msgstr "Create, modify, and extract from archives." + +#. Strings for arguments in help texts. +#: src/ar.c:100 +msgid "[MEMBER] [COUNT] ARCHIVE [FILE...]" +msgstr "[MEMBER] [COUNT] ARCHIVE [FILE...]" + +#: src/ar.c:179 +#, c-format +msgid "'a', 'b', and 'i' are only allowed with the 'm' and 'r' options" +msgstr "'a', 'b', and ‘i’ are only allowed with the ‘m’ and ‘r’ options" + +#: src/ar.c:184 +#, c-format +msgid "MEMBER parameter required for 'a', 'b', and 'i' modifiers" +msgstr "MEMBER parameter required for 'a', 'b', and ‘i’ modifiers" + +#: src/ar.c:200 +#, c-format +msgid "'N' is only meaningful with the 'x' and 'd' options" +msgstr "‘N’ is only meaningful with the ‘x’ and ‘d’ options" + +#: src/ar.c:205 +#, c-format +msgid "COUNT parameter required" +msgstr "COUNT parameter required" + +#: src/ar.c:217 +#, c-format +msgid "invalid COUNT parameter %s" +msgstr "invalid COUNT parameter %s" + +#: src/ar.c:224 +#, c-format +msgid "'%c' is only meaningful with the 'x' option" +msgstr "‘%c’ is only meaningful with the ‘x’ option" + +#: src/ar.c:230 +#, c-format +msgid "archive name required" +msgstr "archive name required" + +#: src/ar.c:243 +#, c-format +msgid "command option required" +msgstr "command option required" + +#: src/ar.c:294 +#, c-format +msgid "More than one operation specified" +msgstr "More than one operation specified" + +#: src/ar.c:388 +#, c-format +msgid "cannot open archive '%s'" +msgstr "cannot open archive ‘%s’" + +#: src/ar.c:398 +#, c-format +msgid "cannot open archive '%s': %s" +msgstr "cannot open archive '%s': %s" + +#: src/ar.c:402 +#, c-format +msgid "%s: not an archive file" +msgstr "%s: not an archive file" + +#: src/ar.c:406 +#, c-format +msgid "cannot stat archive '%s'" +msgstr "cannot stat archive ‘%s’" + +#: src/ar.c:418 +#, c-format +msgid "no entry %s in archive\n" +msgstr "no entry %s in archive\n" + +#: src/ar.c:471 src/ar.c:925 src/ar.c:1131 +msgid "cannot create hash table" +msgstr "cannot create hash table" + +#: src/ar.c:477 src/ar.c:931 src/ar.c:1139 +msgid "cannot insert into hash table" +msgstr "cannot insert into hash table" + +#: src/ar.c:485 src/ranlib.c:147 +#, c-format +msgid "cannot stat '%s'" +msgstr "cannot stat ‘%s’" + +#: src/ar.c:587 +#, c-format +msgid "cannot read content of %s: %s" +msgstr "cannot read content of %s: %s" + +#: src/ar.c:630 +#, c-format +msgid "cannot open %.*s" +msgstr "cannot open %.*s" + +#: src/ar.c:652 +#, c-format +msgid "failed to write %s" +msgstr "failed to write %s" + +#: src/ar.c:664 +#, c-format +msgid "cannot change mode of %s" +msgstr "cannot change mode of %s" + +#: src/ar.c:680 +#, c-format +msgid "cannot change modification time of %s" +msgstr "cannot change modification time of %s" + +#: src/ar.c:726 +#, c-format +msgid "cannot rename temporary file to %.*s" +msgstr "cannot rename temporary file to %.*s" + +#: src/ar.c:762 src/ar.c:1016 src/ar.c:1419 src/ranlib.c:221 +#, c-format +msgid "cannot create new file" +msgstr "cannot create new file" + +#: src/ar.c:1221 +#, c-format +msgid "position member %s not found" +msgstr "position member %s not found" + +#: src/ar.c:1231 +#, c-format +msgid "%s: no entry %s in archive!\n" +msgstr "%s: no entry %s in archive!\n" + +#: src/ar.c:1260 src/objdump.c:240 +#, c-format +msgid "cannot open %s" +msgstr "cannot open %s" + +#: src/ar.c:1265 +#, c-format +msgid "cannot stat %s" +msgstr "cannot stat %s" + +#: src/ar.c:1271 +#, c-format +msgid "%s is no regular file" +msgstr "%s is no regular file" + +#: src/ar.c:1284 +#, c-format +msgid "cannot get ELF descriptor for %s: %s\n" +msgstr "cannot get ELF descriptor for %s: %s\n" + +#: src/ar.c:1304 +#, c-format +msgid "cannot read %s: %s" +msgstr "cannot read %s: %s" + +#: src/ar.c:1479 +#, c-format +msgid "cannot represent ar_date" +msgstr "cannot represent ar_date" + +#: src/ar.c:1485 +#, c-format +msgid "cannot represent ar_uid" +msgstr "cannot represent ar_uid" + +#: src/ar.c:1491 +#, c-format +msgid "cannot represent ar_gid" +msgstr "cannot represent ar_gid" + +#: src/ar.c:1497 +#, c-format +msgid "cannot represent ar_mode" +msgstr "cannot represent ar_mode" + +#: src/ar.c:1503 +#, c-format +msgid "cannot represent ar_size" +msgstr "cannot represent ar_size" + +#: src/arlib-argp.c:31 +msgid "Use zero for uid, gid, and date in archive members." +msgstr "Use zero for uid, gid, and date in archive members." + +#: src/arlib-argp.c:33 +msgid "Use actual uid, gid, and date in archive members." +msgstr "Use actual uid, gid, and date in archive members." + +#: src/arlib-argp.c:62 +#, c-format +msgid "%s (default)" +msgstr "%s (default)" + +#. The archive is too big. +#: src/arlib.c:212 +#, c-format +msgid "the archive '%s' is too large" +msgstr "the archive ‘%s’ is too large" + +#: src/arlib.c:225 +#, c-format +msgid "cannot read ELF header of %s(%s): %s" +msgstr "cannot read ELF header of %s(%s): %s" + +#: src/elfclassify.c:91 +msgid "opening" +msgstr "opening" + +#: src/elfclassify.c:98 +msgid "reading" +msgstr "reading" + +#: src/elfclassify.c:244 +msgid "ELF header" +msgstr "ELF header" + +#: src/elfclassify.c:255 +msgid "program headers" +msgstr "program headers" + +#: src/elfclassify.c:264 +msgid "program header" +msgstr "program header" + +#: src/elfclassify.c:284 +msgid "section headers" +msgstr "section headers" + +#: src/elfclassify.c:295 +msgid "section header string table index" +msgstr "section header string table index" + +#: src/elfclassify.c:309 +msgid "could not obtain section header" +msgstr "could not obtain section header" + +#: src/elfclassify.c:315 +msgid "could not obtain section name" +msgstr "could not obtain section name" + +#: src/elfclassify.c:828 +msgid "writing to standard output" +msgstr "writing to standard output" + +#: src/elfclassify.c:855 +msgid "reading from standard input" +msgstr "reading from standard input" + +#: src/elfclassify.c:876 +msgid "Classification options" +msgstr "Classification options" + +#: src/elfclassify.c:878 +msgid "File looks like an ELF object or archive/static library (default)" +msgstr "File looks like an ELF object or archive/static library (default)" + +#: src/elfclassify.c:881 +msgid "File is an regular ELF object (not an archive/static library)" +msgstr "File is an regular ELF object (not an archive/static library)" + +#: src/elfclassify.c:884 +msgid "File is an ELF archive or static library" +msgstr "File is an ELF archive or static library" + +#: src/elfclassify.c:887 +msgid "File is an ELF core dump file" +msgstr "File is an ELF core dump file" + +#: src/elfclassify.c:890 +msgid "" +"File is an ELF file with symbol table or .debug_* sections and can be " +"stripped further" +msgstr "" +"File is an ELF file with symbol table or .debug_* sections and can be " +"stripped further" + +#: src/elfclassify.c:893 +msgid "File is (primarily) an ELF program executable (not primarily a DSO)" +msgstr "File is (primarily) an ELF program executable (not primarily a DSO)" + +#: src/elfclassify.c:896 +msgid "File is an ELF program executable (might also be a DSO)" +msgstr "File is an ELF program executable (might also be a DSO)" + +#: src/elfclassify.c:899 +msgid "" +"File is (primarily) an ELF shared object (DSO) (not primarily an executable)" +msgstr "" +"File is (primarily) an ELF shared object (DSO) (not primarily an executable)" + +#: src/elfclassify.c:902 +msgid "File is an ELF shared object (DSO) (might also be an executable)" +msgstr "File is an ELF shared object (DSO) (might also be an executable)" + +#: src/elfclassify.c:906 +msgid "File is a linux kernel module" +msgstr "File is a linux kernel module" + +#: src/elfclassify.c:908 +msgid "File is a debug only ELF file (separate .debug, .dwo or dwz multi-file)" +msgstr "" +"File is a debug only ELF file (separate .debug, .dwo or dwz multi-file)" + +#: src/elfclassify.c:911 +msgid "File is a loadable ELF object (program or shared object)" +msgstr "File is a loadable ELF object (program or shared object)" + +#: src/elfclassify.c:940 +msgid "Input flags" +msgstr "Input flags" + +#: src/elfclassify.c:942 +msgid "Only classify regular (not symlink nor special device) files" +msgstr "Only classify regular (not symlink nor special device) files" + +#: src/elfclassify.c:944 +msgid "" +"Also read file names to process from standard input, separated by newlines" +msgstr "" +"Also read file names to process from standard input, separated by newlines" + +#: src/elfclassify.c:947 +msgid "" +"Also read file names to process from standard input, separated by ASCII NUL " +"bytes" +msgstr "" +"Also read file names to process from standard input, separated by ASCII NUL " +"bytes" + +#: src/elfclassify.c:950 +msgid "Do not read files from standard input (default)" +msgstr "Do not read files from standard input (default)" + +#: src/elfclassify.c:952 +msgid "Try to open compressed files or embedded (kernel) ELF images" +msgstr "Try to open compressed files or embedded (kernel) ELF images" + +#: src/elfclassify.c:955 +msgid "Output flags" +msgstr "Output flags" + +#: src/elfclassify.c:957 +msgid "Output names of files, separated by newline" +msgstr "Output names of files, separated by newline" + +#: src/elfclassify.c:959 +msgid "Output names of files, separated by ASCII NUL" +msgstr "Output names of files, separated by ASCII NUL" + +#: src/elfclassify.c:961 +msgid "Do not output file names" +msgstr "Do not output file names" + +#: src/elfclassify.c:963 +msgid "If printing file names, print matching files (default)" +msgstr "If printing file names, print matching files (default)" + +#: src/elfclassify.c:965 +msgid "If printing file names, print files that do not match" +msgstr "If printing file names, print files that do not match" + +#: src/elfclassify.c:967 +msgid "Additional flags" +msgstr "Additional flags" + +#: src/elfclassify.c:969 +msgid "Output additional information (can be specified multiple times)" +msgstr "Output additional information (can be specified multiple times)" + +#: src/elfclassify.c:971 +msgid "Suppress some error output (counterpart to --verbose)" +msgstr "Suppress some error output (counterpart to --verbose)" + +#. Strings for arguments in help texts. +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 +msgid "FILE..." +msgstr "FILE..." + +#: src/elfclassify.c:980 +msgid "" +"Determine the type of an ELF file.\n" +"\n" +"All of the classification options must apply at the same time to a " +"particular file. Classification options can be negated using a \"--not-\" " +"prefix.\n" +"\n" +"Since modern ELF does not clearly distinguish between programs and dynamic " +"shared objects, you should normally use either --executable or --shared to " +"identify the primary purpose of a file. Only one of the --shared and --" +"executable checks can pass for a file.\n" +"\n" +"If you want to know whether an ELF object might a program or a shared " +"library (but could be both), then use --program or --library. Some ELF files " +"will classify as both a program and a library.\n" +"\n" +"If you just want to know whether an ELF file is loadable (as program or " +"library) use --loadable. Note that files that only contain (separate) debug " +"information (--debug-only) are never --loadable (even though they might " +"contain program headers). Linux kernel modules are also not --loadable (in " +"the normal sense).\n" +"\n" +"Without any of the --print options, the program exits with status 0 if the " +"requested checks pass for all input files, with 1 if a check fails for any " +"file, and 2 if there is an environmental issue (such as a file read error or " +"a memory allocation error).\n" +"\n" +"When printing file names, the program exits with status 0 even if no file " +"names are printed, and exits with status 2 if there is an environmental " +"issue.\n" +"\n" +"On usage error (e.g. a bad option was given), the program exits with a " +"status code larger than 2.\n" +"\n" +"The --quiet or -q option suppresses some error warning output, but doesn't " +"change the exit status." +msgstr "" +"Determine the type of an ELF file.\n" +"\n" +"All of the classification options must apply at the same time to a " +"particular file. Classification options can be negated using a “--not-” " +"prefix.\n" +"\n" +"Since modern ELF does not clearly distinguish between programs and dynamic " +"shared objects, you should normally use either --executable or --shared to " +"identify the primary purpose of a file. Only one of the --shared and --" +"executable checks can pass for a file.\n" +"\n" +"If you want to know whether an ELF object might a program or a shared " +"library (but could be both), then use --program or --library. Some ELF files " +"will classify as both a program and a library.\n" +"\n" +"If you just want to know whether an ELF file is loadable (as program or " +"library) use --loadable. Note that files that only contain (separate) debug " +"information (--debug-only) are never --loadable (even though they might " +"contain program headers). Linux kernel modules are also not --loadable (in " +"the normal sense).\n" +"\n" +"Without any of the --print options, the program exits with status 0 if the " +"requested checks pass for all input files, with 1 if a check fails for any " +"file, and 2 if there is an environmental issue (such as a file read error or " +"a memory allocation error).\n" +"\n" +"When printing file names, the program exits with status 0 even if no file " +"names are printed, and exits with status 2 if there is an environmental " +"issue.\n" +"\n" +"On usage error (e.g. a bad option was given), the program exits with a " +"status code larger than 2.\n" +"\n" +"The --quiet or -q option suppresses some error warning output, but doesn't " +"change the exit status." + +#: src/elfcmp.c:59 +msgid "Control options:" +msgstr "Control options:" + +#: src/elfcmp.c:61 +msgid "Output all differences, not just the first" +msgstr "Output all differences, not just the first" + +#: src/elfcmp.c:62 +msgid "" +"Control treatment of gaps in loadable segments [ignore|match] (default: " +"ignore)" +msgstr "" +"Control treatment of gaps in loadable segments [ignore|match] (default: " +"ignore)" + +#: src/elfcmp.c:64 +msgid "Ignore permutation of buckets in SHT_HASH section" +msgstr "Ignore permutation of buckets in SHT_HASH section" + +#: src/elfcmp.c:66 +msgid "Ignore differences in build ID" +msgstr "Ignore differences in build ID" + +#: src/elfcmp.c:67 +msgid "Output nothing; yield exit status only" +msgstr "Output nothing; yield exit status only" + +#. Short description of program. +#: src/elfcmp.c:74 +msgid "Compare relevant parts of two ELF files for equality." +msgstr "Compare relevant parts of two ELF files for equality." + +#. Strings for arguments in help texts. +#: src/elfcmp.c:78 +msgid "FILE1 FILE2" +msgstr "FILE1 FILE2" + +#: src/elfcmp.c:140 +msgid "Invalid number of parameters.\n" +msgstr "Invalid number of parameters.\n" + +#: src/elfcmp.c:171 src/elfcmp.c:176 +#, c-format +msgid "cannot get ELF header of '%s': %s" +msgstr "cannot get ELF header of '%s': %s" + +#: src/elfcmp.c:202 +#, c-format +msgid "%s %s diff: ELF header" +msgstr "%s %s diff: ELF header" + +#: src/elfcmp.c:209 src/elfcmp.c:212 +#, c-format +msgid "cannot get section count of '%s': %s" +msgstr "cannot get section count of '%s': %s" + +#: src/elfcmp.c:217 +#, c-format +msgid "%s %s diff: section count" +msgstr "%s %s diff: section count" + +#: src/elfcmp.c:224 src/elfcmp.c:227 +#, c-format +msgid "cannot get program header count of '%s': %s" +msgstr "cannot get program header count of '%s': %s" + +#: src/elfcmp.c:232 +#, c-format +msgid "%s %s diff: program header count" +msgstr "%s %s diff: program header count" + +#: src/elfcmp.c:240 src/elfcmp.c:243 +#, c-format +msgid "cannot get hdrstrndx of '%s': %s" +msgstr "cannot get hdrstrndx of '%s': %s" + +#: src/elfcmp.c:248 +#, c-format +msgid "%s %s diff: shdr string index" +msgstr "%s %s diff: shdr string index" + +#: src/elfcmp.c:306 +#, c-format +msgid "%s %s differ: section [%zu], [%zu] name" +msgstr "%s %s differ: section [%zu], [%zu] name" + +#: src/elfcmp.c:329 +#, c-format +msgid "%s %s differ: section [%zu] '%s' header" +msgstr "%s %s differ: section [%zu] ‘%s’ header" + +#: src/elfcmp.c:337 src/elfcmp.c:343 +#, c-format +msgid "cannot get content of section %zu in '%s': %s" +msgstr "cannot get content of section %zu in '%s': %s" + +#: src/elfcmp.c:352 +#, c-format +msgid "symbol table [%zu] in '%s' has zero sh_entsize" +msgstr "symbol table [%zu] in ‘%s’ has zero sh_entsize" + +#: src/elfcmp.c:364 src/elfcmp.c:370 +#, c-format +msgid "cannot get symbol in '%s': %s" +msgstr "cannot get symbol in '%s': %s" + +#: src/elfcmp.c:392 +#, c-format +msgid "%s %s differ: symbol table [%zu]" +msgstr "%s %s differ: symbol table [%zu]" + +#: src/elfcmp.c:395 +#, c-format +msgid "%s %s differ: symbol table [%zu,%zu]" +msgstr "%s %s differ: symbol table [%zu,%zu]" + +#: src/elfcmp.c:442 src/elfcmp.c:512 +#, c-format +msgid "%s %s differ: section [%zu] '%s' number of notes" +msgstr "%s %s differ: section [%zu] ‘%s’ number of notes" + +#: src/elfcmp.c:450 +#, c-format +msgid "cannot read note section [%zu] '%s' in '%s': %s" +msgstr "cannot read note section [%zu] ‘%s’ in '%s': %s" + +#: src/elfcmp.c:461 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note name" +msgstr "%s %s differ: section [%zu] ‘%s’ note name" + +#: src/elfcmp.c:469 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note '%s' type" +msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ type" + +#: src/elfcmp.c:484 +#, c-format +msgid "%s %s differ: build ID length" +msgstr "%s %s differ: build ID length" + +#: src/elfcmp.c:492 +#, c-format +msgid "%s %s differ: build ID content" +msgstr "%s %s differ: build ID content" + +#: src/elfcmp.c:501 +#, c-format +msgid "%s %s differ: section [%zu] '%s' note '%s' content" +msgstr "%s %s differ: section [%zu] ‘%s’ note ‘%s’ content" + +#: src/elfcmp.c:542 +#, c-format +msgid "%s %s differ: section [%zu] '%s' content" +msgstr "%s %s differ: section [%zu] ‘%s’ content" + +#: src/elfcmp.c:546 +#, c-format +msgid "%s %s differ: section [%zu,%zu] '%s' content" +msgstr "%s %s differ: section [%zu,%zu] ‘%s’ content" + +#: src/elfcmp.c:561 +#, c-format +msgid "%s %s differ: unequal amount of important sections" +msgstr "%s %s differ: unequal amount of important sections" + +#: src/elfcmp.c:594 src/elfcmp.c:599 +#, c-format +msgid "cannot load data of '%s': %s" +msgstr "cannot load data of '%s': %s" + +#: src/elfcmp.c:618 src/elfcmp.c:624 +#, c-format +msgid "cannot get program header entry %d of '%s': %s" +msgstr "cannot get program header entry %d of '%s': %s" + +#: src/elfcmp.c:630 +#, c-format +msgid "%s %s differ: program header %d" +msgstr "%s %s differ: program header %d" + +#: src/elfcmp.c:654 +#, c-format +msgid "%s %s differ: gap" +msgstr "%s %s differ: gap" + +#: src/elfcmp.c:705 +#, c-format +msgid "Invalid value '%s' for --gaps parameter." +msgstr "Invalid value ‘%s’ for --gaps parameter." + +#: src/elfcmp.c:733 src/findtextrel.c:194 src/nm.c:363 src/ranlib.c:140 +#: src/size.c:271 src/strings.c:184 src/strip.c:1040 src/strip.c:1077 +#: src/unstrip.c:2194 src/unstrip.c:2223 +#, c-format +msgid "cannot open '%s'" +msgstr "cannot open ‘%s’" + +#: src/elfcmp.c:737 src/findtextrel.c:213 src/ranlib.c:157 +#, c-format +msgid "cannot create ELF descriptor for '%s': %s" +msgstr "cannot create ELF descriptor for '%s': %s" + +#: src/elfcmp.c:742 +#, c-format +msgid "cannot create EBL descriptor for '%s'" +msgstr "cannot create EBL descriptor for ‘%s’" + +#: src/elfcmp.c:760 src/findtextrel.c:384 +#, c-format +msgid "cannot get section header of section %zu: %s" +msgstr "cannot get section header of section %zu: %s" + +#: src/elfcmp.c:770 +#, c-format +msgid "cannot get content of section %zu: %s" +msgstr "cannot get content of section %zu: %s" + +#: src/elfcmp.c:780 src/elfcmp.c:794 +#, c-format +msgid "cannot get relocation: %s" +msgstr "cannot get relocation: %s" + +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 +#, c-format +msgid "-o option specified twice" +msgstr "-o option specified twice" + +#: src/elfcompress.c:135 +#, c-format +msgid "-t option specified twice" +msgstr "-t option specified twice" + +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "ZSTD support is not enabled" + +#: src/elfcompress.c:150 +#, c-format +msgid "unknown compression type '%s'" +msgstr "unknown compression type ‘%s’" + +#. We need at least one input file. +#: src/elfcompress.c:162 src/elfcompress.c:1447 +#, c-format +msgid "No input file given" +msgstr "No input file given" + +#: src/elfcompress.c:168 src/elfcompress.c:1451 +#, c-format +msgid "Only one input file allowed together with '-o'" +msgstr "Only one input file allowed together with ‘-o’" + +#: src/elfcompress.c:1408 +msgid "Place (de)compressed output into FILE" +msgstr "Place (de)compressed output into FILE" + +#: src/elfcompress.c:1411 +msgid "" +"What type of compression to apply. TYPE can be 'none' (decompress), " +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" +msgstr "" +"What type of compression to apply. TYPE can be ‘none’ (decompress), " +"‘zlib’ (ELF ZLIB compression, the default, ‘zlib-gabi’ is an alias), ‘zlib-" +"gnu’ (.zdebug GNU style compression, ‘gnu’ is an alias) or ‘zstd’ (ELF ZSTD " +"compression)" + +#: src/elfcompress.c:1415 +msgid "" +"SECTION name to (de)compress, SECTION is an extended wildcard pattern " +"(defaults to '.?(z)debug*')" +msgstr "" +"SECTION name to (de)compress, SECTION is an extended wildcard pattern " +"(defaults to '.?(z)debug*')" + +#: src/elfcompress.c:1418 +msgid "Print a message for each section being (de)compressed" +msgstr "Print a message for each section being (de)compressed" + +#: src/elfcompress.c:1421 +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 "" +"Force compression of section even if it would become larger or update/" +"rewrite the file even if no section would be (de)compressed" + +#: src/elfcompress.c:1424 src/strip.c:92 +msgid "Relax a few rules to handle slightly broken ELF files" +msgstr "Relax a few rules to handle slightly broken ELF files" + +#: src/elfcompress.c:1427 +msgid "Be silent when a section cannot be compressed" +msgstr "Be silent when a section cannot be compressed" + +#: src/elfcompress.c:1437 +msgid "Compress or decompress sections in an ELF file." +msgstr "Compress or decompress sections in an ELF file." + +#: src/elflint.c:63 +msgid "Be extremely strict, flag level 2 features." +msgstr "Be extremely strict, flag level 2 features." + +#: src/elflint.c:64 +msgid "Do not print anything if successful" +msgstr "Do not print anything if successful" + +#: src/elflint.c:65 +msgid "Binary is a separate debuginfo file" +msgstr "Binary is a separate debuginfo file" + +#: src/elflint.c:67 +msgid "" +"Binary has been created with GNU ld and is therefore known to be broken in " +"certain ways" +msgstr "" +"Binary has been created with GNU ld and is therefore known to be broken in " +"certain ways" + +#. Short description of program. +#: src/elflint.c:73 +msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." +msgstr "Pedantic checking of ELF files compliance with gABI/psABI spec." + +#: src/elflint.c:154 src/readelf.c:413 +#, c-format +msgid "cannot open input file '%s'" +msgstr "cannot open input file ‘%s’" + +#: src/elflint.c:161 +#, c-format +msgid "cannot generate Elf descriptor for '%s': %s\n" +msgstr "cannot generate Elf descriptor for '%s': %s\n" + +#: src/elflint.c:180 +#, c-format +msgid "error while closing Elf descriptor: %s\n" +msgstr "error while closing Elf descriptor: %s\n" + +#: src/elflint.c:184 +msgid "No errors" +msgstr "No errors" + +#: src/elflint.c:219 src/readelf.c:625 +msgid "Missing file name.\n" +msgstr "Missing file name.\n" + +#: src/elflint.c:284 +#, c-format +msgid " error while freeing sub-ELF descriptor: %s\n" +msgstr " error while freeing sub-ELF descriptor: %s\n" + +#. We cannot do anything. +#: src/elflint.c:292 +#, c-format +msgid "Not an ELF file - it has the wrong magic bytes at the start\n" +msgstr "Not an ELF file - it has the wrong magic bytes at the start\n" + +#: src/elflint.c:358 +#, c-format +msgid "e_ident[%d] == %d is no known class\n" +msgstr "e_ident[%d] == %d is no known class\n" + +#: src/elflint.c:363 +#, c-format +msgid "e_ident[%d] == %d is no known data encoding\n" +msgstr "e_ident[%d] == %d is no known data encoding\n" + +#: src/elflint.c:367 +#, c-format +msgid "unknown ELF header version number e_ident[%d] == %d\n" +msgstr "unknown ELF header version number e_ident[%d] == %d\n" + +#: src/elflint.c:375 +#, c-format +msgid "unsupported OS ABI e_ident[%d] == '%s'\n" +msgstr "unsupported OS ABI e_ident[%d] == ‘%s’\n" + +#: src/elflint.c:381 +#, c-format +msgid "unsupported ABI version e_ident[%d] == %d\n" +msgstr "unsupported ABI version e_ident[%d] == %d\n" + +#: src/elflint.c:386 +#, c-format +msgid "e_ident[%zu] is not zero\n" +msgstr "e_ident[%zu] is not zero\n" + +#: src/elflint.c:391 +#, c-format +msgid "unknown object file type %d\n" +msgstr "unknown object file type %d\n" + +#: src/elflint.c:398 +#, c-format +msgid "unknown machine type %d\n" +msgstr "unknown machine type %d\n" + +#: src/elflint.c:402 +#, c-format +msgid "unknown object file version\n" +msgstr "unknown object file version\n" + +#: src/elflint.c:408 +#, c-format +msgid "invalid program header offset\n" +msgstr "invalid program header offset\n" + +#: src/elflint.c:410 +#, c-format +msgid "executables and DSOs cannot have zero program header offset\n" +msgstr "executables and DSOs cannot have zero program header offset\n" + +#: src/elflint.c:414 +#, c-format +msgid "invalid number of program header entries\n" +msgstr "invalid number of program header entries\n" + +#: src/elflint.c:422 +#, c-format +msgid "invalid section header table offset\n" +msgstr "invalid section header table offset\n" + +#: src/elflint.c:425 +#, c-format +msgid "section header table must be present\n" +msgstr "section header table must be present\n" + +#: src/elflint.c:439 +#, c-format +msgid "invalid number of section header table entries\n" +msgstr "invalid number of section header table entries\n" + +#: src/elflint.c:456 +#, c-format +msgid "invalid section header index\n" +msgstr "invalid section header index\n" + +#: src/elflint.c:474 +#, c-format +msgid "Can only check %u headers, shnum was %u\n" +msgstr "Can only check %u headers, shnum was %u\n" + +#: src/elflint.c:488 +#, c-format +msgid "invalid number of program header table entries\n" +msgstr "invalid number of program header table entries\n" + +#: src/elflint.c:505 +#, c-format +msgid "Can only check %u headers, phnum was %u\n" +msgstr "Can only check %u headers, phnum was %u\n" + +#: src/elflint.c:510 +#, c-format +msgid "invalid machine flags: %s\n" +msgstr "invalid machine flags: %s\n" + +#: src/elflint.c:517 src/elflint.c:534 +#, c-format +msgid "invalid ELF header size: %hd\n" +msgstr "invalid ELF header size: %hd\n" + +#: src/elflint.c:520 src/elflint.c:537 +#, c-format +msgid "invalid program header size: %hd\n" +msgstr "invalid program header size: %hd\n" + +#: src/elflint.c:523 src/elflint.c:540 +#, c-format +msgid "invalid program header position or size\n" +msgstr "invalid program header position or size\n" + +#: src/elflint.c:526 src/elflint.c:543 +#, c-format +msgid "invalid section header size: %hd\n" +msgstr "invalid section header size: %hd\n" + +#: src/elflint.c:529 src/elflint.c:546 +#, c-format +msgid "invalid section header position or size\n" +msgstr "invalid section header position or size\n" + +#: src/elflint.c:591 +#, c-format +msgid "" +"section [%2d] '%s': section with SHF_GROUP flag set not part of a section " +"group\n" +msgstr "" +"section [%2d] '%s': section with SHF_GROUP flag set not part of a section " +"group\n" + +#: src/elflint.c:595 +#, c-format +msgid "" +"section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" +msgstr "" +"section [%2d] '%s': section group [%2zu] ‘%s’ does not precede group member\n" + +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 +#, c-format +msgid "section [%2d] '%s': cannot get section data\n" +msgstr "section [%2d] '%s': cannot get section data\n" + +#: src/elflint.c:624 src/elflint.c:1699 +#, c-format +msgid "" +"section [%2d] '%s': referenced as string table for section [%2d] '%s' but " +"type is not SHT_STRTAB\n" +msgstr "" +"section [%2d] '%s': referenced as string table for section [%2d] ‘%s’ but " +"type is not SHT_STRTAB\n" + +#: src/elflint.c:647 +#, c-format +msgid "" +"section [%2d] '%s': symbol table cannot have more than one extended index " +"section\n" +msgstr "" +"section [%2d] '%s': symbol table cannot have more than one extended index " +"section\n" + +#: src/elflint.c:659 +#, c-format +msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" +msgstr "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" + +#: src/elflint.c:663 +#, c-format +msgid "" +"section [%2u] '%s': number of local entries in 'st_info' larger than table " +"size\n" +msgstr "" +"section [%2u] '%s': number of local entries in ‘st_info’ larger than table " +"size\n" + +#: src/elflint.c:672 +#, c-format +msgid "section [%2d] '%s': cannot get symbol %d: %s\n" +msgstr "section [%2d] '%s': cannot get symbol %d: %s\n" + +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 +#, c-format +msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" +msgstr "section [%2d] '%s': ‘%s’ in zeroth entry not zero\n" + +#: src/elflint.c:695 +#, c-format +msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" +msgstr "section [%2d] '%s': XINDEX for zeroth entry not zero\n" + +#: src/elflint.c:705 +#, c-format +msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" +msgstr "section [%2d] '%s': cannot get symbol %zu: %s\n" + +#: src/elflint.c:714 +#, c-format +msgid "section [%2d] '%s': symbol %zu: invalid name value\n" +msgstr "section [%2d] '%s': symbol %zu: invalid name value\n" + +#: src/elflint.c:729 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): too large section index but no extended " +"section index section\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): too large section index but no extended " +"section index section\n" + +#: src/elflint.c:735 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " +"in st_shndx (%)\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " +"in st_shndx (%)\n" + +#. || sym->st_shndx > SHN_HIRESERVE always false +#: src/elflint.c:747 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" +msgstr "section [%2d] '%s': symbol %zu (%s): invalid section index\n" + +#: src/elflint.c:755 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" +msgstr "section [%2d] '%s': symbol %zu (%s): unknown type\n" + +#: src/elflint.c:761 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" +msgstr "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" + +#: src/elflint.c:766 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" + +#: src/elflint.c:774 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " +"files\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " +"files\n" + +#: src/elflint.c:778 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" + +#: src/elflint.c:782 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" + +#: src/elflint.c:833 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n" +msgstr "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n" + +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " +"section [%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " +"section [%2d] ‘%s’\n" + +#: src/elflint.c:848 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " +"have SHF_TLS flag set\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): referenced section [%2d] ‘%s’ does not " +"have SHF_TLS flag set\n" + +#: src/elflint.c:858 src/elflint.c:906 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " +"section [%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " +"section [%2d] ‘%s’\n" + +#: src/elflint.c:885 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " +"entry\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " +"entry\n" + +#: src/elflint.c:891 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " +"header entry\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " +"header entry\n" + +#: src/elflint.c:899 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " +"[%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " +"[%2d] ‘%s’\n" + +#: src/elflint.c:926 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " +"sh_info\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " +"sh_info\n" + +#: src/elflint.c:933 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " +"described in sh_info\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " +"described in sh_info\n" + +#: src/elflint.c:940 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" +msgstr "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" + +#: src/elflint.c:990 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " +"[%2d]\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " +"[%2d]\n" + +#: src/elflint.c:997 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " +"'%s'\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to 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. +#: src/elflint.c:1013 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " +"match %s section address %#\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " +"match %s section address %#\n" + +#: src/elflint.c:1020 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " +"match %s section size %\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " +"match %s section size %\n" + +#: src/elflint.c:1028 +#, c-format +msgid "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " +"section\n" +msgstr "" +"section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " +"section\n" + +#: src/elflint.c:1044 +#, c-format +msgid "" +"section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " +"segment address %#\n" +msgstr "" +"section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " +"segment address %#\n" + +#: src/elflint.c:1051 +#, c-format +msgid "" +"section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " +"segment size %\n" +msgstr "" +"section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " +"segment size %\n" + +#: src/elflint.c:1064 +#, c-format +msgid "" +"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" +"default visibility\n" +msgstr "" +"section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" +"default visibility\n" + +#: src/elflint.c:1068 +#, c-format +msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n" +msgstr "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n" + +#: src/elflint.c:1106 +#, c-format +msgid "section [%2d] '%s': cannot get section data.\n" +msgstr "section [%2d] '%s': cannot get section data.\n" + +#: src/elflint.c:1122 +#, c-format +msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" +msgstr "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" + +#: src/elflint.c:1133 src/elflint.c:1186 +#, c-format +msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" +msgstr "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n" + +#: src/elflint.c:1158 src/elflint.c:1211 +#, c-format +msgid "" +"section [%2d] '%s': relative relocations after index %d as specified by " +"DT_RELCOUNT\n" +msgstr "" +"section [%2d] '%s': relative relocations after index %d as specified by " +"DT_RELCOUNT\n" + +#: src/elflint.c:1164 src/elflint.c:1217 +#, c-format +msgid "" +"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " +"specified %d relative relocations\n" +msgstr "" +"section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " +"specified %d relative relocations\n" + +#: src/elflint.c:1176 +#, c-format +msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" +msgstr "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" + +#: src/elflint.c:1259 +#, c-format +msgid "section [%2d] '%s': invalid destination section index\n" +msgstr "section [%2d] '%s': invalid destination section index\n" + +#: src/elflint.c:1271 +#, c-format +msgid "section [%2d] '%s': invalid destination section type\n" +msgstr "section [%2d] '%s': invalid destination section type\n" + +#: src/elflint.c:1279 +#, c-format +msgid "section [%2d] '%s': sh_info should be zero\n" +msgstr "section [%2d] '%s': sh_info should be zero\n" + +#: src/elflint.c:1287 +#, c-format +msgid "" +"section [%2d] '%s': no relocations for merge-able string sections possible\n" +msgstr "" +"section [%2d] '%s': no relocations for merge-able string sections possible\n" + +#: src/elflint.c:1365 +#, c-format +msgid "text relocation flag set but there is no read-only segment\n" +msgstr "text relocation flag set but there is no read-only segment\n" + +#: src/elflint.c:1392 +#, c-format +msgid "section [%2d] '%s': relocation %zu: invalid type\n" +msgstr "section [%2d] '%s': relocation %zu: invalid type\n" + +#: src/elflint.c:1400 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: relocation type invalid for the file " +"type\n" +msgstr "" +"section [%2d] '%s': relocation %zu: relocation type invalid for the file " +"type\n" + +#: src/elflint.c:1408 +#, c-format +msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" +msgstr "section [%2d] '%s': relocation %zu: invalid symbol index\n" + +#: src/elflint.c:1426 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " +"be used with %s\n" +msgstr "" +"section [%2d] '%s': relocation %zu: only symbol ‘_GLOBAL_OFFSET_TABLE_’ can " +"be used with %s\n" + +#: src/elflint.c:1443 +#, c-format +msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" +msgstr "section [%2d] '%s': relocation %zu: offset out of bounds\n" + +#: src/elflint.c:1458 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: copy relocation against symbol of type " +"%s\n" +msgstr "" +"section [%2d] '%s': relocation %zu: copy relocation against symbol of type " +"%s\n" + +#: src/elflint.c:1479 +#, c-format +msgid "" +"section [%2d] '%s': relocation %zu: read-only section modified but text " +"relocation flag not set\n" +msgstr "" +"section [%2d] '%s': relocation %zu: read-only section modified but text " +"relocation flag not set\n" + +#: src/elflint.c:1494 +#, c-format +msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n" +msgstr "section [%2d] '%s': relocations are against loaded and unloaded data\n" + +#: src/elflint.c:1534 src/elflint.c:1585 +#, c-format +msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" +msgstr "section [%2d] '%s': cannot get relocation %zu: %s\n" + +#: src/elflint.c:1687 +#, c-format +msgid "more than one dynamic section present\n" +msgstr "more than one dynamic section present\n" + +#: src/elflint.c:1705 +#, c-format +msgid "" +"section [%2d]: referenced as string table for section [%2d] '%s' but section " +"link value is invalid\n" +msgstr "" +"section [%2d]: referenced as string table for section [%2d] ‘%s’ but section " +"link value is invalid\n" + +#: src/elflint.c:1713 +#, c-format +msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" +msgstr "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" + +#: src/elflint.c:1718 src/elflint.c:2008 +#, c-format +msgid "section [%2d] '%s': sh_info not zero\n" +msgstr "section [%2d] '%s': sh_info not zero\n" + +#: src/elflint.c:1728 +#, c-format +msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" +msgstr "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" + +#: src/elflint.c:1736 +#, c-format +msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" +msgstr "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" + +#: src/elflint.c:1743 +#, c-format +msgid "section [%2d] '%s': entry %zu: unknown tag\n" +msgstr "section [%2d] '%s': entry %zu: unknown tag\n" + +#: src/elflint.c:1754 +#, c-format +msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" +msgstr "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" + +#: src/elflint.c:1764 +#, c-format +msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" +msgstr "section [%2d] '%s': entry %zu: level 2 tag %s used\n" + +#: src/elflint.c:1782 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" +msgstr "" +"section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" + +#: src/elflint.c:1795 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: pointer does not match address of section " +"[%2d] '%s' referenced by sh_link\n" +msgstr "" +"section [%2d] '%s': entry %zu: pointer does not match address of section " +"[%2d] ‘%s’ referenced by sh_link\n" + +#: src/elflint.c:1839 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" +msgstr "" +"section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" + +#: src/elflint.c:1854 +#, c-format +msgid "" +"section [%2d] '%s': entry %zu: %s value must be valid offset in section " +"[%2d] '%s'\n" +msgstr "" +"section [%2d] '%s': entry %zu: %s value must be valid offset in section " +"[%2d] ‘%s’\n" + +#: src/elflint.c:1874 src/elflint.c:1902 +#, c-format +msgid "section [%2d] '%s': contains %s entry but not %s\n" +msgstr "section [%2d] '%s': contains %s entry but not %s\n" + +#: src/elflint.c:1886 +#, c-format +msgid "section [%2d] '%s': mandatory tag %s not present\n" +msgstr "section [%2d] '%s': mandatory tag %s not present\n" + +#: src/elflint.c:1895 +#, c-format +msgid "section [%2d] '%s': no hash section present\n" +msgstr "section [%2d] '%s': no hash section present\n" + +#: src/elflint.c:1910 src/elflint.c:1917 +#, c-format +msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n" +msgstr "section [%2d] '%s': not all of %s, %s, and %s are present\n" + +#: src/elflint.c:1927 src/elflint.c:1931 +#, c-format +msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" +msgstr "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" + +#: src/elflint.c:1937 +#, c-format +msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" +msgstr "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" + +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 +#, c-format +msgid "section [%2d] '%s': %s tag missing in prelinked executable\n" +msgstr "section [%2d] '%s': %s tag missing in prelinked executable\n" + +#: src/elflint.c:1972 +#, c-format +msgid "" +"section [%2d] '%s': only relocatable files can have extended section index\n" +msgstr "" +"section [%2d] '%s': only relocatable files can have extended section index\n" + +#: src/elflint.c:1982 +#, c-format +msgid "" +"section [%2d] '%s': extended section index section not for symbol table\n" +msgstr "" +"section [%2d] '%s': extended section index section not for symbol table\n" + +#: src/elflint.c:1986 +#, c-format +msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" +msgstr "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" + +#: src/elflint.c:1991 +#, c-format +msgid "cannot get data for symbol section\n" +msgstr "cannot get data for symbol section\n" + +#: src/elflint.c:1994 +#, c-format +msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" +msgstr "section [%2d] '%s': entry size does not match Elf32_Word\n" + +#: src/elflint.c:2003 +#, c-format +msgid "section [%2d] '%s': extended index table too small for symbol table\n" +msgstr "section [%2d] '%s': extended index table too small for symbol table\n" + +#: src/elflint.c:2018 +#, c-format +msgid "" +"section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " +"same symbol table\n" +msgstr "" +"section [%2d] '%s': extended section index in section [%2zu] ‘%s’ refers to " +"same symbol table\n" + +#: src/elflint.c:2036 +#, c-format +msgid "symbol 0 should have zero extended section index\n" +msgstr "symbol 0 should have zero extended section index\n" + +#: src/elflint.c:2048 +#, c-format +msgid "cannot get data for symbol %zu\n" +msgstr "cannot get data for symbol %zu\n" + +#: src/elflint.c:2053 +#, c-format +msgid "extended section index is % but symbol index is not XINDEX\n" +msgstr "extended section index is % but symbol index is not XINDEX\n" + +#: src/elflint.c:2070 src/elflint.c:2127 +#, c-format +msgid "" +"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" +msgstr "" +"section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" + +#: src/elflint.c:2084 src/elflint.c:2141 +#, c-format +msgid "section [%2d] '%s': chain array too large\n" +msgstr "section [%2d] '%s': chain array too large\n" + +#: src/elflint.c:2098 src/elflint.c:2155 +#, c-format +msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" +msgstr "section [%2d] '%s': hash bucket reference %zu out of bounds\n" + +#: src/elflint.c:2108 +#, c-format +msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" +msgstr "section [%2d] '%s': hash chain reference %zu out of bounds\n" + +#: src/elflint.c:2165 +#, c-format +msgid "section [%2d] '%s': hash chain reference % out of bounds\n" +msgstr "section [%2d] '%s': hash chain reference % out of bounds\n" + +#: src/elflint.c:2178 +#, c-format +msgid "section [%2d] '%s': not enough data\n" +msgstr "section [%2d] '%s': not enough data\n" + +#: src/elflint.c:2190 +#, c-format +msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n" +msgstr "section [%2d] '%s': bitmask size zero or not power of 2: %u\n" + +#: src/elflint.c:2206 +#, c-format +msgid "" +"section [%2d] '%s': hash table section is too small (is %ld, expected at " +"least %ld)\n" +msgstr "" +"section [%2d] '%s': hash table section is too small (is %ld, expected at " +"least %ld)\n" + +#: src/elflint.c:2215 +#, c-format +msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n" +msgstr "section [%2d] '%s': 2nd hash function shift too big: %u\n" + +#: src/elflint.c:2249 +#, c-format +msgid "" +"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" +msgstr "" +"section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" + +#: src/elflint.c:2270 +#, c-format +msgid "" +"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " +"undefined\n" +msgstr "" +"section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " +"undefined\n" + +#: src/elflint.c:2283 +#, c-format +msgid "" +"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" +msgstr "" +"section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" + +#: src/elflint.c:2292 +#, c-format +msgid "" +"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" +msgstr "" +"section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" + +#: src/elflint.c:2322 +#, c-format +msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" +msgstr "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" + +#: src/elflint.c:2327 +#, c-format +msgid "" +"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" +msgstr "" +"section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" + +#: src/elflint.c:2333 +#, c-format +msgid "section [%2d] '%s': bitmask does not match names in the hash table\n" +msgstr "section [%2d] '%s': bitmask does not match names in the hash table\n" + +#: src/elflint.c:2346 +#, c-format +msgid "section [%2d] '%s': relocatable files cannot have hash tables\n" +msgstr "section [%2d] '%s': relocatable files cannot have hash tables\n" + +#: src/elflint.c:2364 +#, c-format +msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" +msgstr "section [%2d] '%s': hash table not for dynamic symbol table\n" + +#: src/elflint.c:2368 +#, c-format +msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" +msgstr "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" + +#: src/elflint.c:2378 +#, c-format +msgid "section [%2d] '%s': hash table entry size incorrect\n" +msgstr "section [%2d] '%s': hash table entry size incorrect\n" + +#: src/elflint.c:2383 +#, c-format +msgid "section [%2d] '%s': not marked to be allocated\n" +msgstr "section [%2d] '%s': not marked to be allocated\n" + +#: src/elflint.c:2388 +#, c-format +msgid "" +"section [%2d] '%s': hash table has not even room for initial administrative " +"entries\n" +msgstr "" +"section [%2d] '%s': hash table has not even room for initial administrative " +"entries\n" + +#: src/elflint.c:2437 +#, c-format +msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n" +msgstr "sh_link in hash sections [%2zu] ‘%s’ and [%2zu] ‘%s’ not identical\n" + +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 +#, c-format +msgid "hash section [%2zu] '%s' does not contain enough data\n" +msgstr "hash section [%2zu] ‘%s’ does not contain enough data\n" + +#: src/elflint.c:2482 +#, c-format +msgid "hash section [%2zu] '%s' has zero bit mask words\n" +msgstr "hash section [%2zu] ‘%s’ has zero bit mask words\n" + +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 +#, c-format +msgid "hash section [%2zu] '%s' uses too much data\n" +msgstr "hash section [%2zu] ‘%s’ uses too much data\n" + +#: src/elflint.c:2508 +#, c-format +msgid "" +"hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " +"%, nentries: %\n" +msgstr "" +"hash section [%2zu] ‘%s’ invalid symbol index % (max_nsyms: " +"%, nentries: %\n" + +#: src/elflint.c:2595 +#, c-format +msgid "hash section [%2zu] '%s' invalid sh_entsize\n" +msgstr "hash section [%2zu] ‘%s’ invalid sh_entsize\n" + +#: src/elflint.c:2605 src/elflint.c:2609 +#, c-format +msgid "section [%2zu] '%s': reference to symbol index 0\n" +msgstr "section [%2zu] '%s': reference to symbol index 0\n" + +#: src/elflint.c:2616 +#, c-format +msgid "" +"symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash " +"table in [%2zu] '%s'\n" +msgstr "" +"symbol %d referenced in new hash table in [%2zu] ‘%s’ but not in old hash " +"table in [%2zu] ‘%s’\n" + +#: src/elflint.c:2628 +#, c-format +msgid "" +"symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash " +"table in [%2zu] '%s'\n" +msgstr "" +"symbol %d referenced in old hash table in [%2zu] ‘%s’ but not in new hash " +"table in [%2zu] ‘%s’\n" + +#: src/elflint.c:2644 +#, c-format +msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" +msgstr "section [%2d] '%s': nonzero sh_%s for NULL section\n" + +#: src/elflint.c:2664 +#, c-format +msgid "" +"section [%2d] '%s': section groups only allowed in relocatable object files\n" +msgstr "" +"section [%2d] '%s': section groups only allowed in relocatable object files\n" + +#: src/elflint.c:2675 +#, c-format +msgid "section [%2d] '%s': cannot get symbol table: %s\n" +msgstr "section [%2d] '%s': cannot get symbol table: %s\n" + +#: src/elflint.c:2680 +#, c-format +msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n" +msgstr "section [%2d] '%s': section reference in sh_link is no symbol table\n" + +#: src/elflint.c:2686 +#, c-format +msgid "section [%2d] '%s': invalid symbol index in sh_info\n" +msgstr "section [%2d] '%s': invalid symbol index in sh_info\n" + +#: src/elflint.c:2691 +#, c-format +msgid "section [%2d] '%s': sh_flags not zero\n" +msgstr "section [%2d] '%s': sh_flags not zero\n" + +#: src/elflint.c:2698 +#, c-format +msgid "section [%2d] '%s': cannot get symbol for signature\n" +msgstr "section [%2d] '%s': cannot get symbol for signature\n" + +#: src/elflint.c:2702 +#, c-format +msgid "section [%2d] '%s': cannot get symbol name for signature\n" +msgstr "section [%2d] '%s': cannot get symbol name for signature\n" + +#: src/elflint.c:2707 +#, c-format +msgid "section [%2d] '%s': signature symbol cannot be empty string\n" +msgstr "section [%2d] '%s': signature symbol cannot be empty string\n" + +#: src/elflint.c:2713 +#, c-format +msgid "section [%2d] '%s': sh_flags not set correctly\n" +msgstr "section [%2d] '%s': sh_flags not set correctly\n" + +#: src/elflint.c:2719 +#, c-format +msgid "section [%2d] '%s': cannot get data: %s\n" +msgstr "section [%2d] '%s': cannot get data: %s\n" + +#: src/elflint.c:2728 +#, c-format +msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" +msgstr "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" + +#: src/elflint.c:2734 +#, c-format +msgid "section [%2d] '%s': section group without flags word\n" +msgstr "section [%2d] '%s': section group without flags word\n" + +#: src/elflint.c:2742 +#, c-format +msgid "section [%2d] '%s': section group without member\n" +msgstr "section [%2d] '%s': section group without member\n" + +#: src/elflint.c:2746 +#, c-format +msgid "section [%2d] '%s': section group with only one member\n" +msgstr "section [%2d] '%s': section group with only one member\n" + +#: src/elflint.c:2757 +#, c-format +msgid "section [%2d] '%s': unknown section group flags\n" +msgstr "section [%2d] '%s': unknown section group flags\n" + +#: src/elflint.c:2769 +#, c-format +msgid "section [%2d] '%s': section index %zu out of range\n" +msgstr "section [%2d] '%s': section index %zu out of range\n" + +#: src/elflint.c:2778 +#, c-format +msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" +msgstr "section [%2d] '%s': cannot get section header for element %zu: %s\n" + +#: src/elflint.c:2785 +#, c-format +msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" +msgstr "section [%2d] '%s': section group contains another group [%2d] ‘%s’\n" + +#: src/elflint.c:2791 +#, c-format +msgid "" +"section [%2d] '%s': element %zu references section [%2d] '%s' without " +"SHF_GROUP flag set\n" +msgstr "" +"section [%2d] '%s': element %zu references section [%2d] ‘%s’ without " +"SHF_GROUP flag set\n" + +#: src/elflint.c:2798 +#, c-format +msgid "section [%2d] '%s' is contained in more than one section group\n" +msgstr "section [%2d] ‘%s’ is contained in more than one section group\n" + +#: src/elflint.c:2995 +#, c-format +msgid "" +"section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no " +"dynamic symbol table\n" +msgstr "" +"section [%2d] ‘%s’ refers in sh_link to section [%2d] ‘%s’ which is no " +"dynamic symbol table\n" + +#: src/elflint.c:3007 +#, c-format +msgid "" +"section [%2d] '%s' has different number of entries than symbol table [%2d] " +"'%s'\n" +msgstr "" +"section [%2d] ‘%s’ has different number of entries than symbol table [%2d] " +"‘%s’\n" + +#: src/elflint.c:3023 +#, c-format +msgid "section [%2d] '%s': symbol %d: cannot read version data\n" +msgstr "section [%2d] '%s': symbol %d: cannot read version data\n" + +#: src/elflint.c:3039 +#, c-format +msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n" +msgstr "section [%2d] '%s': symbol %d: local symbol with global scope\n" + +#: src/elflint.c:3047 +#, c-format +msgid "section [%2d] '%s': symbol %d: local symbol with version\n" +msgstr "section [%2d] '%s': symbol %d: local symbol with version\n" + +#: src/elflint.c:3061 +#, c-format +msgid "section [%2d] '%s': symbol %d: invalid version index %d\n" +msgstr "section [%2d] '%s': symbol %d: invalid version index %d\n" + +#: src/elflint.c:3066 +#, c-format +msgid "" +"section [%2d] '%s': symbol %d: version index %d is for defined version\n" +msgstr "" +"section [%2d] '%s': symbol %d: version index %d is for defined version\n" + +#: src/elflint.c:3076 +#, c-format +msgid "" +"section [%2d] '%s': symbol %d: version index %d is for requested version\n" +msgstr "" +"section [%2d] '%s': symbol %d: version index %d is for requested version\n" + +#: src/elflint.c:3129 +#, c-format +msgid "more than one version reference section present\n" +msgstr "more than one version reference section present\n" + +#: src/elflint.c:3137 src/elflint.c:3284 +#, c-format +msgid "section [%2d] '%s': sh_link does not link to string table\n" +msgstr "section [%2d] '%s': sh_link does not link to string table\n" + +#: src/elflint.c:3162 src/elflint.c:3338 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong version %d\n" +msgstr "section [%2d] '%s': entry %d has wrong version %d\n" + +#: src/elflint.c:3169 src/elflint.c:3345 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" +msgstr "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" + +#: src/elflint.c:3179 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid file reference\n" +msgstr "section [%2d] '%s': entry %d has invalid file reference\n" + +#: src/elflint.c:3187 +#, c-format +msgid "section [%2d] '%s': entry %d references unknown dependency\n" +msgstr "section [%2d] '%s': entry %d references unknown dependency\n" + +#: src/elflint.c:3199 +#, c-format +msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" +msgstr "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" + +#: src/elflint.c:3207 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " +"reference\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " +"reference\n" + +#: src/elflint.c:3216 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " +"%#x, expected %#x\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " +"%#x, expected %#x\n" + +#: src/elflint.c:3225 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " +"name '%s'\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " +"name ‘%s’\n" + +#: src/elflint.c:3236 +#, c-format +msgid "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" +msgstr "" +"section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" + +#: src/elflint.c:3253 src/elflint.c:3429 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n" +msgstr "section [%2d] '%s': entry %d has invalid offset to next entry\n" + +#: src/elflint.c:3261 src/elflint.c:3437 +#, c-format +msgid "" +"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " +"there are more entries\n" +msgstr "" +"section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " +"there are more entries\n" + +#: src/elflint.c:3276 +#, c-format +msgid "more than one version definition section present\n" +msgstr "more than one version definition section present\n" + +#: src/elflint.c:3323 +#, c-format +msgid "section [%2d] '%s': more than one BASE definition\n" +msgstr "section [%2d] '%s': more than one BASE definition\n" + +#: src/elflint.c:3327 +#, c-format +msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" +msgstr "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" + +#: src/elflint.c:3333 +#, c-format +msgid "section [%2d] '%s': entry %d has unknown flag\n" +msgstr "section [%2d] '%s': entry %d has unknown flag\n" + +#: src/elflint.c:3360 +#, c-format +msgid "section [%2d] '%s': entry %d has invalid name reference\n" +msgstr "section [%2d] '%s': entry %d has invalid name reference\n" + +#: src/elflint.c:3367 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" +msgstr "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" + +#: src/elflint.c:3375 +#, c-format +msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n" +msgstr "section [%2d] '%s': entry %d has duplicate version name ‘%s’\n" + +#: src/elflint.c:3395 +#, c-format +msgid "" +"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" +msgstr "" +"section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" + +#: src/elflint.c:3412 +#, c-format +msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" +msgstr "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" + +#: src/elflint.c:3445 +#, c-format +msgid "section [%2d] '%s': no BASE definition\n" +msgstr "section [%2d] '%s': no BASE definition\n" + +#: src/elflint.c:3461 +#, c-format +msgid "section [%2d] '%s': unknown parent version '%s'\n" +msgstr "section [%2d] '%s': unknown parent version ‘%s’\n" + +#: src/elflint.c:3486 +#, c-format +msgid "section [%2d] '%s': empty object attributes section\n" +msgstr "section [%2d] '%s': empty object attributes section\n" + +#: src/elflint.c:3502 +#, c-format +msgid "section [%2d] '%s': unrecognized attribute format\n" +msgstr "section [%2d] '%s': unrecognized attribute format\n" + +#: src/elflint.c:3513 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: zero length field in attribute section\n" +msgstr "" +"section [%2d] '%s': offset %zu: zero length field in attribute section\n" + +#: src/elflint.c:3522 +#, c-format +msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n" +msgstr "section [%2d] '%s': offset %zu: invalid length in attribute section\n" + +#: src/elflint.c:3534 +#, c-format +msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n" +msgstr "section [%2d] '%s': offset %zu: unterminated vendor name string\n" + +#: src/elflint.c:3551 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" +msgstr "" +"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" + +#: src/elflint.c:3560 +#, c-format +msgid "section [%2d] '%s': offset %zu: truncated attribute section\n" +msgstr "section [%2d] '%s': offset %zu: truncated attribute section\n" + +#: src/elflint.c:3569 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" +msgstr "" +"section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" + +#: src/elflint.c:3584 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" +msgstr "" +"section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" + +#. Tag_File +#: src/elflint.c:3595 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" +msgstr "" +"section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" + +#: src/elflint.c:3616 +#, c-format +msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" +msgstr "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" + +#: src/elflint.c:3627 +#, c-format +msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n" +msgstr "section [%2d] '%s': offset %zu: unterminated string in attribute\n" + +#: src/elflint.c:3640 +#, c-format +msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" +msgstr "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" + +#: src/elflint.c:3644 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" +msgstr "" +"section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" + +#: src/elflint.c:3654 +#, c-format +msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n" +msgstr "section [%2d] '%s': offset %zu: vendor ‘%s’ unknown\n" + +#: src/elflint.c:3660 +#, c-format +msgid "" +"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" +msgstr "" +"section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" + +#: src/elflint.c:3758 +#, c-format +msgid "cannot get section header of zeroth section\n" +msgstr "cannot get section header of zeroth section\n" + +#: src/elflint.c:3762 +#, c-format +msgid "zeroth section has nonzero name\n" +msgstr "zeroth section has nonzero name\n" + +#: src/elflint.c:3764 +#, c-format +msgid "zeroth section has nonzero type\n" +msgstr "zeroth section has nonzero type\n" + +#: src/elflint.c:3766 +#, c-format +msgid "zeroth section has nonzero flags\n" +msgstr "zeroth section has nonzero flags\n" + +#: src/elflint.c:3768 +#, c-format +msgid "zeroth section has nonzero address\n" +msgstr "zeroth section has nonzero address\n" + +#: src/elflint.c:3770 +#, c-format +msgid "zeroth section has nonzero offset\n" +msgstr "zeroth section has nonzero offset\n" + +#: src/elflint.c:3772 +#, c-format +msgid "zeroth section has nonzero align value\n" +msgstr "zeroth section has nonzero align value\n" + +#: src/elflint.c:3774 +#, c-format +msgid "zeroth section has nonzero entry size value\n" +msgstr "zeroth section has nonzero entry size value\n" + +#: src/elflint.c:3777 +#, c-format +msgid "" +"zeroth section has nonzero size value while ELF header has nonzero shnum " +"value\n" +msgstr "" +"zeroth section has nonzero size value while ELF header has nonzero shnum " +"value\n" + +#: src/elflint.c:3781 +#, c-format +msgid "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in shstrndx\n" +msgstr "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in shstrndx\n" + +#: src/elflint.c:3785 +#, c-format +msgid "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in phnum\n" +msgstr "" +"zeroth section has nonzero link value while ELF header does not signal " +"overflow in phnum\n" + +#: src/elflint.c:3803 +#, c-format +msgid "cannot get section header for section [%2zu] '%s': %s\n" +msgstr "cannot get section header for section [%2zu] '%s': %s\n" + +#: src/elflint.c:3812 +#, c-format +msgid "section [%2zu]: invalid name\n" +msgstr "section [%2zu]: invalid name\n" + +#: src/elflint.c:3839 +#, c-format +msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" +msgstr "section [%2d] ‘%s’ has wrong type: expected %s, is %s\n" + +#: src/elflint.c:3856 +#, c-format +msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" +msgstr "section [%2zu] ‘%s’ has wrong flags: expected %s, is %s\n" + +#: src/elflint.c:3874 +#, c-format +msgid "" +"section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" +msgstr "" +"section [%2zu] ‘%s’ has wrong flags: expected %s and possibly %s, is %s\n" + +#: src/elflint.c:3891 +#, c-format +msgid "section [%2zu] '%s' present in object file\n" +msgstr "section [%2zu] ‘%s’ present in object file\n" + +#: src/elflint.c:3897 src/elflint.c:3929 +#, c-format +msgid "" +"section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" +msgstr "" +"section [%2zu] ‘%s’ has SHF_ALLOC flag set but there is no loadable segment\n" + +#: src/elflint.c:3902 src/elflint.c:3934 +#, c-format +msgid "" +"section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " +"segments\n" +msgstr "" +"section [%2zu] ‘%s’ has SHF_ALLOC flag not set but there are loadable " +"segments\n" + +#: src/elflint.c:3910 +#, c-format +msgid "" +"section [%2zu] '%s' is extension section index table in non-object file\n" +msgstr "" +"section [%2zu] ‘%s’ is extension section index table in non-object file\n" + +#: src/elflint.c:3953 +#, c-format +msgid "section [%2zu] '%s': size not multiple of entry size\n" +msgstr "section [%2zu] '%s': size not multiple of entry size\n" + +#: src/elflint.c:3958 +#, c-format +msgid "cannot get section header\n" +msgstr "cannot get section header\n" + +#: src/elflint.c:3968 +#, c-format +msgid "section [%2zu] '%s' has unsupported type %d\n" +msgstr "section [%2zu] ‘%s’ has unsupported type %d\n" + +#: src/elflint.c:3988 +#, c-format +msgid "" +"section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" +msgstr "" +"section [%2zu] ‘%s’ contains invalid processor-specific flag(s) %#\n" + +#: src/elflint.c:3998 +#, c-format +msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" +msgstr "section [%2zu] ‘%s’ contains unknown flag(s) %#\n" + +#: src/elflint.c:4006 +#, c-format +msgid "section [%2zu] '%s': thread-local data sections address not zero\n" +msgstr "section [%2zu] '%s': thread-local data sections address not zero\n" + +#: src/elflint.c:4016 +#, c-format +msgid "section [%2zu] '%s': allocated section cannot be compressed\n" +msgstr "section [%2zu] '%s': allocated section cannot be compressed\n" + +#: src/elflint.c:4021 +#, c-format +msgid "section [%2zu] '%s': nobits section cannot be compressed\n" +msgstr "section [%2zu] '%s': nobits section cannot be compressed\n" + +#: src/elflint.c:4027 +#, c-format +msgid "" +"section [%2zu] '%s': compressed section with no compression header: %s\n" +msgstr "" +"section [%2zu] '%s': compressed section with no compression header: %s\n" + +#: src/elflint.c:4033 +#, c-format +msgid "section [%2zu] '%s': invalid section reference in link value\n" +msgstr "section [%2zu] '%s': invalid section reference in link value\n" + +#: src/elflint.c:4038 +#, c-format +msgid "section [%2zu] '%s': invalid section reference in info value\n" +msgstr "section [%2zu] '%s': invalid section reference in info value\n" + +#: src/elflint.c:4045 +#, c-format +msgid "section [%2zu] '%s': strings flag set without merge flag\n" +msgstr "section [%2zu] '%s': strings flag set without merge flag\n" + +#: src/elflint.c:4050 +#, c-format +msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" +msgstr "section [%2zu] '%s': merge flag set but entry size is zero\n" + +#: src/elflint.c:4069 +#, c-format +msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n" +msgstr "section [%2zu] ‘%s’ has unexpected type %d for an executable section\n" + +#: src/elflint.c:4078 +#, c-format +msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n" +msgstr "section [%2zu] ‘%s’ must be of type NOBITS in debuginfo files\n" + +#: src/elflint.c:4085 +#, c-format +msgid "section [%2zu] '%s' is both executable and writable\n" +msgstr "section [%2zu] ‘%s’ is both executable and writable\n" + +#: src/elflint.c:4116 +#, c-format +msgid "" +"section [%2zu] '%s' not fully contained in segment of program header entry " +"%d\n" +msgstr "" +"section [%2zu] ‘%s’ not fully contained in segment of program header entry " +"%d\n" + +#: src/elflint.c:4126 +#, c-format +msgid "" +"section [%2zu] '%s' has type NOBITS but is read from the file in segment of " +"program header entry %d\n" +msgstr "" +"section [%2zu] ‘%s’ has type NOBITS but is read from the file in segment of " +"program header entry %d\n" + +#: src/elflint.c:4152 +#, 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 "" +"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" + +#: src/elflint.c:4163 +#, 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 "" +"section [%2zu] ‘%s’ has not type NOBITS but is not read from the file in " +"segment of program header entry %d\n" + +#: src/elflint.c:4174 +#, c-format +msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n" +msgstr "section [%2zu] ‘%s’ is executable in nonexecutable segment %d\n" + +#: src/elflint.c:4184 +#, c-format +msgid "section [%2zu] '%s' is writable in unwritable segment %d\n" +msgstr "section [%2zu] ‘%s’ is writable in unwritable segment %d\n" + +#: src/elflint.c:4194 +#, c-format +msgid "" +"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" +msgstr "" +"section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" + +#: src/elflint.c:4200 +#, c-format +msgid "" +"section [%2zu] '%s': ELF header says this is the section header string table " +"but type is not SHT_TYPE\n" +msgstr "" +"section [%2zu] '%s': ELF header says this is the section header string table " +"but type is not SHT_TYPE\n" + +#: src/elflint.c:4208 +#, c-format +msgid "" +"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" +msgstr "" +"section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" + +#: src/elflint.c:4263 +#, c-format +msgid "more than one version symbol table present\n" +msgstr "more than one version symbol table present\n" + +#: src/elflint.c:4286 +#, c-format +msgid "INTERP program header entry but no .interp section\n" +msgstr "INTERP program header entry but no .interp section\n" + +#: src/elflint.c:4297 +#, c-format +msgid "" +"loadable segment [%u] is executable but contains no executable sections\n" +msgstr "" +"loadable segment [%u] is executable but contains no executable sections\n" + +#: src/elflint.c:4303 +#, c-format +msgid "loadable segment [%u] is writable but contains no writable sections\n" +msgstr "loadable segment [%u] is writable but contains no writable sections\n" + +#: src/elflint.c:4314 +#, c-format +msgid "" +"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " +"exist\n" +msgstr "" +"no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " +"exist\n" + +#: src/elflint.c:4327 +#, c-format +msgid "duplicate version index %d\n" +msgstr "duplicate version index %d\n" + +#: src/elflint.c:4341 +#, c-format +msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" +msgstr ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" + +#: src/elflint.c:4390 +#, c-format +msgid "phdr[%d]: unknown core file note type % at offset %\n" +msgstr "phdr[%d]: unknown core file note type % at offset %\n" + +#: src/elflint.c:4394 +#, c-format +msgid "" +"section [%2d] '%s': unknown core file note type % at offset %zu\n" +msgstr "" +"section [%2d] '%s': unknown core file note type % at offset %zu\n" + +#: src/elflint.c:4450 +#, c-format +msgid "" +"phdr[%d]: unknown object file note type % with owner name '%s' at " +"offset %zu\n" +msgstr "" +"phdr[%d]: unknown object file note type % with owner name ‘%s’ at " +"offset %zu\n" + +#: src/elflint.c:4455 +#, c-format +msgid "" +"section [%2d] '%s': unknown object file note type % with owner name " +"'%s' at offset %zu\n" +msgstr "" +"section [%2d] '%s': unknown object file note type % with owner name " +"‘%s’ at offset %zu\n" + +#: src/elflint.c:4474 +#, c-format +msgid "phdr[%d]: no note entries defined for the type of file\n" +msgstr "phdr[%d]: no note entries defined for the type of file\n" + +#: src/elflint.c:4494 +#, c-format +msgid "phdr[%d]: cannot get content of note section: %s\n" +msgstr "phdr[%d]: cannot get content of note section: %s\n" + +#: src/elflint.c:4497 +#, c-format +msgid "phdr[%d]: extra % bytes after last note\n" +msgstr "phdr[%d]: extra % bytes after last note\n" + +#: src/elflint.c:4518 +#, c-format +msgid "section [%2d] '%s': no note entries defined for the type of file\n" +msgstr "section [%2d] '%s': no note entries defined for the type of file\n" + +#: src/elflint.c:4525 +#, c-format +msgid "section [%2d] '%s': cannot get content of note section\n" +msgstr "section [%2d] '%s': cannot get content of note section\n" + +#: src/elflint.c:4528 +#, c-format +msgid "section [%2d] '%s': extra % bytes after last note\n" +msgstr "section [%2d] '%s': extra % bytes after last note\n" + +#: src/elflint.c:4546 +#, c-format +msgid "" +"only executables, shared objects, and core files can have program headers\n" +msgstr "" +"only executables, shared objects, and core files can have program headers\n" + +#: src/elflint.c:4561 +#, c-format +msgid "cannot get program header entry %d: %s\n" +msgstr "cannot get program header entry %d: %s\n" + +#: src/elflint.c:4571 +#, c-format +msgid "program header entry %d: unknown program header entry type %#\n" +msgstr "" +"program header entry %d: unknown program header entry type %#\n" + +#: src/elflint.c:4582 +#, c-format +msgid "more than one INTERP entry in program header\n" +msgstr "more than one INTERP entry in program header\n" + +#: src/elflint.c:4590 +#, c-format +msgid "more than one TLS entry in program header\n" +msgstr "more than one TLS entry in program header\n" + +#: src/elflint.c:4597 +#, c-format +msgid "static executable cannot have dynamic sections\n" +msgstr "static executable cannot have dynamic sections\n" + +#: src/elflint.c:4611 +#, c-format +msgid "dynamic section reference in program header has wrong offset\n" +msgstr "dynamic section reference in program header has wrong offset\n" + +#: src/elflint.c:4614 +#, c-format +msgid "dynamic section size mismatch in program and section header\n" +msgstr "dynamic section size mismatch in program and section header\n" + +#: src/elflint.c:4624 +#, c-format +msgid "more than one GNU_RELRO entry in program header\n" +msgstr "more than one GNU_RELRO entry in program header\n" + +#: src/elflint.c:4645 +#, c-format +msgid "loadable segment GNU_RELRO applies to is not writable\n" +msgstr "loadable segment GNU_RELRO applies to is not writable\n" + +#: src/elflint.c:4656 +#, c-format +msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" +msgstr "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" + +#: src/elflint.c:4663 +#, c-format +msgid "" +"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" +msgstr "" +"GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" + +#: src/elflint.c:4672 src/elflint.c:4695 +#, c-format +msgid "%s segment not contained in a loaded segment\n" +msgstr "%s segment not contained in a loaded segment\n" + +#: src/elflint.c:4701 +#, c-format +msgid "program header offset in ELF header and PHDR entry do not match" +msgstr "program header offset in ELF header and PHDR entry do not match" + +#: src/elflint.c:4728 +#, c-format +msgid "call frame search table reference in program header has wrong offset\n" +msgstr "call frame search table reference in program header has wrong offset\n" + +#: src/elflint.c:4731 +#, c-format +msgid "call frame search table size mismatch in program and section header\n" +msgstr "call frame search table size mismatch in program and section header\n" + +#: src/elflint.c:4744 +#, c-format +msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" +msgstr "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" + +#: src/elflint.c:4752 +#, c-format +msgid "call frame search table must be allocated\n" +msgstr "call frame search table must be allocated\n" + +#: src/elflint.c:4755 +#, c-format +msgid "section [%2zu] '%s' must be allocated\n" +msgstr "section [%2zu] ‘%s’ must be allocated\n" + +#: src/elflint.c:4759 +#, c-format +msgid "call frame search table must not be writable\n" +msgstr "call frame search table must not be writable\n" + +#: src/elflint.c:4762 +#, c-format +msgid "section [%2zu] '%s' must not be writable\n" +msgstr "section [%2zu] ‘%s’ must not be writable\n" + +#: src/elflint.c:4767 +#, c-format +msgid "call frame search table must not be executable\n" +msgstr "call frame search table must not be executable\n" + +#: src/elflint.c:4770 +#, c-format +msgid "section [%2zu] '%s' must not be executable\n" +msgstr "section [%2zu] ‘%s’ must not be executable\n" + +#: src/elflint.c:4784 +#, c-format +msgid "program header entry %d: file size greater than memory size\n" +msgstr "program header entry %d: file size greater than memory size\n" + +#: src/elflint.c:4791 +#, c-format +msgid "program header entry %d: alignment not a power of 2\n" +msgstr "program header entry %d: alignment not a power of 2\n" + +#: src/elflint.c:4794 +#, c-format +msgid "" +"program header entry %d: file offset and virtual address not module of " +"alignment\n" +msgstr "" +"program header entry %d: file offset and virtual address not module of " +"alignment\n" + +#: src/elflint.c:4807 +#, c-format +msgid "" +"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " +"program header entry" +msgstr "" +"executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " +"program header entry" + +#: src/elflint.c:4841 +#, c-format +msgid "cannot read ELF header: %s\n" +msgstr "cannot read ELF header: %s\n" + +#: src/elflint.c:4853 +#, c-format +msgid "cannot create backend for ELF file\n" +msgstr "cannot create backend for ELF file\n" + +#: src/elflint.c:4874 +#, c-format +msgid "text relocation flag set but not needed\n" +msgstr "text relocation flag set but not needed\n" + +#: src/findtextrel.c:60 +msgid "Input Selection:" +msgstr "Input Selection:" + +#: src/findtextrel.c:61 +msgid "Prepend PATH to all file names" +msgstr "Prepend PATH to all file names" + +#: src/findtextrel.c:63 +msgid "Use PATH as root of debuginfo hierarchy" +msgstr "Use PATH as root of debuginfo hierarchy" + +#. Short description of program. +#: src/findtextrel.c:70 +msgid "Locate source of text relocations in FILEs (a.out by default)." +msgstr "Locate source of text relocations in FILEs (a.out by default)." + +#. Strings for arguments in help texts. +#: src/findtextrel.c:74 src/nm.c:107 src/objdump.c:70 src/size.c:79 +#: src/strings.c:86 src/strip.c:100 +msgid "[FILE...]" +msgstr "[FILE...]" + +#: src/findtextrel.c:223 +#, c-format +msgid "cannot get ELF header '%s': %s" +msgstr "cannot get ELF header '%s': %s" + +#: src/findtextrel.c:234 +#, c-format +msgid "'%s' is not a DSO or PIE" +msgstr "‘%s’ is not a DSO or PIE" + +#: src/findtextrel.c:254 +#, c-format +msgid "getting get section header of section %zu: %s" +msgstr "getting get section header of section %zu: %s" + +#: src/findtextrel.c:278 +#, c-format +msgid "cannot read dynamic section: %s" +msgstr "cannot read dynamic section: %s" + +#: src/findtextrel.c:299 +#, c-format +msgid "no text relocations reported in '%s'" +msgstr "no text relocations reported in ‘%s’" + +#: src/findtextrel.c:310 +#, c-format +msgid "while reading ELF file" +msgstr "while reading ELF file" + +#: src/findtextrel.c:314 +#, c-format +msgid "cannot get program header count: %s" +msgstr "cannot get program header count: %s" + +#: src/findtextrel.c:325 src/findtextrel.c:340 +#, c-format +msgid "cannot get program header index at offset %zd: %s" +msgstr "cannot get program header index at offset %zd: %s" + +#: src/findtextrel.c:396 +#, c-format +msgid "cannot get symbol table section %zu in '%s': %s" +msgstr "cannot get symbol table section %zu in '%s': %s" + +#: src/findtextrel.c:417 src/findtextrel.c:440 +#, c-format +msgid "cannot get relocation at index %d in section %zu in '%s': %s" +msgstr "cannot get relocation at index %d in section %zu in '%s': %s" + +#: src/findtextrel.c:506 +#, c-format +msgid "%s not compiled with -fpic/-fPIC\n" +msgstr "%s not compiled with -fpic/-fPIC\n" + +#: src/findtextrel.c:560 +#, c-format +msgid "" +"the file containing the function '%s' is not compiled with -fpic/-fPIC\n" +msgstr "" +"the file containing the function ‘%s’ is not compiled with -fpic/-fPIC\n" + +#: src/findtextrel.c:567 src/findtextrel.c:587 +#, c-format +msgid "" +"the file containing the function '%s' might not be compiled with -fpic/-" +"fPIC\n" +msgstr "" +"the file containing the function ‘%s’ might not be compiled with -fpic/-" +"fPIC\n" + +#: src/findtextrel.c:575 +#, 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 "" +"either the file containing the function ‘%s’ or the file containing the " +"function ‘%s’ is not compiled with -fpic/-fPIC\n" + +#: src/findtextrel.c:595 +#, c-format +msgid "" +"a relocation modifies memory at offset %llu in a write-protected segment\n" +msgstr "" +"a relocation modifies memory at offset %llu in a write-protected segment\n" + +#: src/nm.c:65 src/strip.c:69 +msgid "Output selection:" +msgstr "Output selection:" + +#: src/nm.c:66 +msgid "Display debugger-only symbols" +msgstr "Display debugger-only symbols" + +#: src/nm.c:67 +msgid "Display only defined symbols" +msgstr "Display only defined symbols" + +#: src/nm.c:70 +msgid "Display dynamic symbols instead of normal symbols" +msgstr "Display dynamic symbols instead of normal symbols" + +#: src/nm.c:71 +msgid "Display only external symbols" +msgstr "Display only external symbols" + +#: src/nm.c:72 +msgid "Display only undefined symbols" +msgstr "Display only undefined symbols" + +#: src/nm.c:74 +msgid "Include index for symbols from archive members" +msgstr "Include index for symbols from archive members" + +#: src/nm.c:76 src/size.c:53 +msgid "Output format:" +msgstr "Output format:" + +#: src/nm.c:78 +msgid "Print name of the input file before every symbol" +msgstr "Print name of the input file before every symbol" + +#: src/nm.c:81 +msgid "" +"Use the output format FORMAT. FORMAT can be `bsd', `sysv' or `posix'. The " +"default is `sysv'" +msgstr "" +"Use the output format FORMAT. FORMAT can be ‘bsd’, ‘sysv’ or ‘posix’. The " +"default is ‘sysv’" + +#: src/nm.c:83 +msgid "Same as --format=bsd" +msgstr "Same as --format=bsd" + +#: src/nm.c:84 +msgid "Same as --format=posix" +msgstr "Same as --format=posix" + +#: src/nm.c:85 src/size.c:59 +msgid "Use RADIX for printing symbol values" +msgstr "Use RADIX for printing symbol values" + +#: src/nm.c:86 +msgid "Mark special symbols" +msgstr "Mark special symbols" + +#: src/nm.c:88 +msgid "Print size of defined symbols" +msgstr "Print size of defined symbols" + +#: src/nm.c:90 src/size.c:67 src/strip.c:74 src/unstrip.c:68 +msgid "Output options:" +msgstr "Output options:" + +#: src/nm.c:91 +msgid "Sort symbols numerically by address" +msgstr "Sort symbols numerically by address" + +#: src/nm.c:93 +msgid "Do not sort the symbols" +msgstr "Do not sort the symbols" + +#: src/nm.c:94 +msgid "Reverse the sense of the sort" +msgstr "Reverse the sense of the sort" + +#: src/nm.c:97 +msgid "Decode low-level symbol names into source code names" +msgstr "Decode low-level symbol names into source code names" + +#. Short description of program. +#: src/nm.c:104 +msgid "List symbols from FILEs (a.out by default)." +msgstr "List symbols from FILEs (a.out by default)." + +#: src/nm.c:115 src/objdump.c:78 +msgid "Output formatting" +msgstr "Output formatting" + +#: src/nm.c:139 src/objdump.c:102 src/size.c:104 src/strip.c:132 +#, c-format +msgid "%s: INTERNAL ERROR %d (%s): %s" +msgstr "%s: INTERNAL ERROR %d (%s): %s" + +#: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 +#: src/strip.c:2763 +#, c-format +msgid "while closing '%s'" +msgstr "while closing ‘%s’" + +#: src/nm.c:402 src/objdump.c:279 src/strip.c:827 +#, c-format +msgid "%s: File format not recognized" +msgstr "%s: File format not recognized" + +#. Note: 0 is no valid offset. +#: src/nm.c:442 +msgid "" +"\n" +"Archive index:\n" +msgstr "" +"\n" +"Archive index:\n" + +#: src/nm.c:451 +#, c-format +msgid "invalid offset %zu for symbol %s" +msgstr "invalid offset %zu for symbol %s" + +#: src/nm.c:456 +#, c-format +msgid "%s in %s\n" +msgstr "%s in %s\n" + +#: src/nm.c:464 +#, c-format +msgid "cannot reset archive offset to beginning" +msgstr "cannot reset archive offset to beginning" + +#: src/nm.c:489 src/objdump.c:327 +#, c-format +msgid "%s%s%s: file format not recognized" +msgstr "%s%s%s: file format not recognized" + +#: src/nm.c:702 +msgid "cannot create search tree" +msgstr "cannot create search tree" + +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 +#, c-format +msgid "cannot get section header string table index" +msgstr "cannot get section header string table index" + +#. We always print this prolog. +#: src/nm.c:767 +#, c-format +msgid "" +"\n" +"\n" +"Symbols from %s:\n" +"\n" +msgstr "" +"\n" +"\n" +"Symbols from %s:\n" +"\n" + +#. The header line. +#: src/nm.c:770 +#, c-format +msgid "" +"%*s%-*s %-*s Class Type %-*s %*s Section\n" +"\n" +msgstr "" +"%*s%-*s %-*s Class Type %-*s %*s Section\n" +"\n" + +#: src/nm.c:772 +msgctxt "sysv" +msgid "Name" +msgstr "Name" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:774 +msgctxt "sysv" +msgid "Value" +msgstr "Value" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:776 +msgctxt "sysv" +msgid "Size" +msgstr "Size" + +#. TRANS: the "sysv|" parts makes the string unique. +#: src/nm.c:778 +msgctxt "sysv" +msgid "Line" +msgstr "Line" + +#: src/nm.c:1245 +#, c-format +msgid "%s: entry size in section %zd `%s' is not what we expect" +msgstr "%s: entry size in section %zd ‘%s’ is not what we expect" + +#: src/nm.c:1250 +#, c-format +msgid "%s: size of section %zd `%s' is not multiple of entry size" +msgstr "%s: size of section %zd ‘%s’ is not multiple of entry size" + +#: src/nm.c:1330 +#, c-format +msgid "%s: entries (%zd) in section %zd `%s' is too large" +msgstr "%s: entries (%zd) in section %zd ‘%s’ is too large" + +#. XXX Add machine specific object file types. +#: src/nm.c:1566 +#, c-format +msgid "%s%s%s%s: Invalid operation" +msgstr "%s%s%s%s: Invalid operation" + +#: src/nm.c:1616 +#, c-format +msgid "%s%s%s: no symbols" +msgstr "%s%s%s: no symbols" + +#: src/objdump.c:51 +msgid "Mode selection:" +msgstr "Mode selection:" + +#: src/objdump.c:52 +msgid "Display relocation information." +msgstr "Display relocation information." + +#: src/objdump.c:54 +msgid "Display the full contents of all sections requested" +msgstr "Display the full contents of all sections requested" + +#: src/objdump.c:56 +msgid "Display assembler code of executable sections" +msgstr "Display assembler code of executable sections" + +#: src/objdump.c:58 +msgid "Output content selection:" +msgstr "Output content selection:" + +#: src/objdump.c:60 +msgid "Only display information for section NAME." +msgstr "Only display information for section NAME." + +#. Short description of program. +#: src/objdump.c:66 +msgid "Show information from FILEs (a.out by default)." +msgstr "Show information from FILEs (a.out by default)." + +#: src/objdump.c:217 src/readelf.c:630 +msgid "No operation specified.\n" +msgstr "No operation specified.\n" + +#: src/objdump.c:257 src/objdump.c:269 +#, c-format +msgid "while close `%s'" +msgstr "while close ‘%s’" + +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 +msgid "INVALID SYMBOL" +msgstr "INVALID SYMBOL" + +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 +msgid "INVALID SECTION" +msgstr "INVALID SECTION" + +#: src/objdump.c:497 +#, c-format +msgid "" +"\n" +"RELOCATION RECORDS FOR [%s]:\n" +"%-*s TYPE VALUE\n" +msgstr "" +"\n" +"RELOCATION RECORDS FOR [%s]:\n" +"%-*s TYPE VALUE\n" + +#: src/objdump.c:500 +msgid "OFFSET" +msgstr "OFFSET" + +#: src/objdump.c:565 +#, c-format +msgid "Contents of section %s:\n" +msgstr "Contents of section %s:\n" + +#: src/objdump.c:686 +msgid "cannot disassemble" +msgstr "cannot disassemble" + +#: src/objdump.c:757 +msgid "cannot create backend for elf file" +msgstr "cannot create backend for elf file" + +#. Short description of program. +#: src/ranlib.c:62 +msgid "Generate an index to speed access to archives." +msgstr "Generate an index to speed access to archives." + +#. Strings for arguments in help texts. +#: src/ranlib.c:65 +msgid "ARCHIVE" +msgstr "ARCHIVE" + +#: src/ranlib.c:101 +#, c-format +msgid "Archive name required" +msgstr "Archive name required" + +#: src/ranlib.c:165 +#, c-format +msgid "'%s' is no archive" +msgstr "‘%s’ is no archive" + +#: src/ranlib.c:200 +#, c-format +msgid "error while freeing sub-ELF descriptor: %s" +msgstr "error while freeing sub-ELF descriptor: %s" + +#: src/readelf.c:97 +msgid "ELF input selection:" +msgstr "ELF input selection:" + +#: src/readelf.c:99 +msgid "" +"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" +msgstr "" +"Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" + +#: src/readelf.c:102 +msgid "" +"Used with -w to find the skeleton Compile Units in FILE associated with the " +"Split Compile units in a .dwo input file" +msgstr "" +"Used with -w to find the skeleton Compile Units in FILE associated with the " +"Split Compile units in a .dwo input file" + +#: src/readelf.c:104 +msgid "ELF output selection:" +msgstr "ELF output selection:" + +#: src/readelf.c:106 +msgid "All these plus -p .strtab -p .dynstr -p .comment" +msgstr "All these plus -p .strtab -p .dynstr -p .comment" + +#: src/readelf.c:107 +msgid "Display the dynamic segment" +msgstr "Display the dynamic segment" + +#: src/readelf.c:108 +msgid "Display the ELF file header" +msgstr "Display the ELF file header" + +#: src/readelf.c:110 +msgid "Display histogram of bucket list lengths" +msgstr "Display histogram of bucket list lengths" + +#: src/readelf.c:111 +msgid "Display the program headers" +msgstr "Display the program headers" + +#: src/readelf.c:113 +msgid "Display relocations" +msgstr "Display relocations" + +#: src/readelf.c:114 +msgid "Display the section groups" +msgstr "Display the section groups" + +#: src/readelf.c:115 +msgid "Display the sections' headers" +msgstr "Display the sections' headers" + +#: src/readelf.c:118 +msgid "Display the symbol table sections" +msgstr "Display the symbol table sections" + +#: src/readelf.c:121 +msgid "Display (only) the dynamic symbol table" +msgstr "Display (only) the dynamic symbol table" + +#: src/readelf.c:122 +msgid "Display versioning information" +msgstr "Display versioning information" + +#: src/readelf.c:123 +msgid "Display the ELF notes" +msgstr "Display the ELF notes" + +#: src/readelf.c:125 +msgid "Display architecture specific information, if any" +msgstr "Display architecture specific information, if any" + +#: src/readelf.c:127 +msgid "Display sections for exception handling" +msgstr "Display sections for exception handling" + +#: src/readelf.c:129 +msgid "Additional output selection:" +msgstr "Additional output selection:" + +#: src/readelf.c:131 +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 "" +"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" + +#: src/readelf.c:135 +msgid "Dump the uninterpreted contents of SECTION, by number or name" +msgstr "Dump the uninterpreted contents of SECTION, by number or name" + +#: src/readelf.c:137 +msgid "Print string contents of sections" +msgstr "Print string contents of sections" + +#: src/readelf.c:140 +msgid "Display the symbol index of an archive" +msgstr "Display the symbol index of an archive" + +#: src/readelf.c:142 +msgid "Use the dynamic segment when possible for displaying info" +msgstr "Use the dynamic segment when possible for displaying info" + +#: src/readelf.c:144 +msgid "Output control:" +msgstr "Output control:" + +#: src/readelf.c:146 +msgid "Do not find symbol names for addresses in DWARF data" +msgstr "Do not find symbol names for addresses in DWARF data" + +#: src/readelf.c:148 +msgid "" +"Display just offsets instead of resolving values to addresses in DWARF data" +msgstr "" +"Display just offsets instead of resolving values to addresses in DWARF data" + +#: src/readelf.c:150 +msgid "Ignored for compatibility (lines always wide)" +msgstr "Ignored for compatibility (lines always wide)" + +#: src/readelf.c:152 +msgid "" +"Show compression information for compressed sections (when used with -S); " +"decompress section before dumping data (when used with -p or -x)" +msgstr "" +"Show compression information for compressed sections (when used with -S); " +"decompress section before dumping data (when used with -p or -x)" + +#. Short description of program. +#: src/readelf.c:157 +msgid "Print information from ELF file in human-readable form." +msgstr "Print information from ELF file in human-readable form." + +#. Look up once. +#: src/readelf.c:395 +msgid "yes" +msgstr "yes" + +#: src/readelf.c:396 +msgid "no" +msgstr "no" + +#: src/readelf.c:598 +#, c-format +msgid "Unknown DWARF debug section `%s'.\n" +msgstr "Unknown DWARF debug section ‘%s’.\n" + +#: src/readelf.c:669 src/readelf.c:780 +#, c-format +msgid "cannot generate Elf descriptor: %s" +msgstr "cannot generate Elf descriptor: %s" + +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 +#, c-format +msgid "cannot determine number of sections: %s" +msgstr "cannot determine number of sections: %s" + +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 +#, c-format +msgid "cannot get section: %s" +msgstr "cannot get section: %s" + +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 +#: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 +#: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 +#: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 +#: 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 "cannot get section header: %s" + +#: src/readelf.c:711 +#, c-format +msgid "cannot get section name" +msgstr "cannot get section name" + +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 +#, c-format +msgid "cannot get %s content: %s" +msgstr "cannot get %s content: %s" + +#: src/readelf.c:736 +#, c-format +msgid "cannot create temp file '%s'" +msgstr "cannot create temp file ‘%s’" + +#: src/readelf.c:745 +#, c-format +msgid "cannot write section data" +msgstr "cannot write section data" + +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 +#, c-format +msgid "error while closing Elf descriptor: %s" +msgstr "error while closing Elf descriptor: %s" + +#: src/readelf.c:758 +#, c-format +msgid "error while rewinding file descriptor" +msgstr "error while rewinding file descriptor" + +#: src/readelf.c:792 +#, c-format +msgid "'%s' is not an archive, cannot print archive index" +msgstr "‘%s’ is not an archive, cannot print archive index" + +#: src/readelf.c:896 +#, c-format +msgid "cannot stat input file" +msgstr "cannot stat input file" + +#: src/readelf.c:898 +#, c-format +msgid "input file is empty" +msgstr "input file is empty" + +#: src/readelf.c:900 +#, c-format +msgid "failed reading '%s': %s" +msgstr "failed reading '%s': %s" + +#: src/readelf.c:929 +#, c-format +msgid "No such section '%s' in '%s'" +msgstr "No such section ‘%s’ in ‘%s’" + +#: src/readelf.c:988 +#, c-format +msgid "cannot read ELF header: %s" +msgstr "cannot read ELF header: %s" + +#: src/readelf.c:996 +#, c-format +msgid "cannot create EBL handle" +msgstr "cannot create EBL handle" + +#: src/readelf.c:1007 +#, c-format +msgid "cannot determine number of program headers: %s" +msgstr "cannot determine number of program headers: %s" + +#: src/readelf.c:1039 +#, c-format +msgid "cannot read ELF: %s" +msgstr "cannot read ELF: %s" + +#: src/readelf.c:1072 +msgid "cannot find section" +msgstr "cannot find section" + +#: src/readelf.c:1109 +msgid "NONE (None)" +msgstr "NONE (None)" + +#: src/readelf.c:1110 +msgid "REL (Relocatable file)" +msgstr "REL (Relocatable file)" + +#: src/readelf.c:1111 +msgid "EXEC (Executable file)" +msgstr "EXEC (Executable file)" + +#: src/readelf.c:1112 +msgid "DYN (Shared object file)" +msgstr "DYN (Shared object file)" + +#: src/readelf.c:1113 +msgid "CORE (Core file)" +msgstr "CORE (Core file)" + +#: src/readelf.c:1118 +#, c-format +msgid "OS Specific: (%x)\n" +msgstr "OS Specific: (%x)\n" + +#. && e_type <= ET_HIPROC always true +#: src/readelf.c:1120 +#, c-format +msgid "Processor Specific: (%x)\n" +msgstr "Processor Specific: (%x)\n" + +#: src/readelf.c:1130 +msgid "" +"ELF Header:\n" +" Magic: " +msgstr "" +"ELF Header:\n" +" Magic: " + +#: src/readelf.c:1134 +#, c-format +msgid "" +"\n" +" Class: %s\n" +msgstr "" +"\n" +" Class: %s\n" + +#: src/readelf.c:1139 +#, c-format +msgid " Data: %s\n" +msgstr " Data: %s\n" + +#: src/readelf.c:1145 +#, c-format +msgid " Ident Version: %hhd %s\n" +msgstr " Ident Version: %hhd %s\n" + +#: src/readelf.c:1147 src/readelf.c:1169 +msgid "(current)" +msgstr "(current)" + +#: src/readelf.c:1151 +#, c-format +msgid " OS/ABI: %s\n" +msgstr " OS/ABI: %s\n" + +#: src/readelf.c:1154 +#, c-format +msgid " ABI Version: %hhd\n" +msgstr " ABI Version: %hhd\n" + +#: src/readelf.c:1157 +msgid " Type: " +msgstr " Type: " + +#: src/readelf.c:1162 +#, c-format +msgid " Machine: %s\n" +msgstr " Machine: %s\n" + +#: src/readelf.c:1164 +#, c-format +msgid " Machine: : 0x%x\n" +msgstr " Machine: : 0x%x\n" + +#: src/readelf.c:1167 +#, c-format +msgid " Version: %d %s\n" +msgstr " Version: %d %s\n" + +#: src/readelf.c:1171 +#, c-format +msgid " Entry point address: %#\n" +msgstr " Entry point address: %#\n" + +#: src/readelf.c:1174 +#, c-format +msgid " Start of program headers: % %s\n" +msgstr " Start of program headers: % %s\n" + +#: src/readelf.c:1175 src/readelf.c:1178 +msgid "(bytes into file)" +msgstr "(bytes into file)" + +#: src/readelf.c:1177 +#, c-format +msgid " Start of section headers: % %s\n" +msgstr " Start of section headers: % %s\n" + +#: src/readelf.c:1180 +#, c-format +msgid " Flags: %s\n" +msgstr " Flags: %s\n" + +#: src/readelf.c:1183 +#, c-format +msgid " Size of this header: % %s\n" +msgstr " Size of this header: % %s\n" + +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 +msgid "(bytes)" +msgstr "(bytes)" + +#: src/readelf.c:1186 +#, c-format +msgid " Size of program header entries: % %s\n" +msgstr " Size of program header entries: % %s\n" + +#: src/readelf.c:1189 +#, c-format +msgid " Number of program headers entries: %" +msgstr " Number of program headers entries: %" + +#: src/readelf.c:1196 +#, c-format +msgid " (% in [0].sh_info)" +msgstr " (% in [0].sh_info)" + +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 +msgid " ([0] not available)" +msgstr " ([0] not available)" + +#: src/readelf.c:1203 +#, c-format +msgid " Size of section header entries: % %s\n" +msgstr " Size of section header entries: % %s\n" + +#: src/readelf.c:1206 +#, c-format +msgid " Number of section headers entries: %" +msgstr " Number of section headers entries: %" + +#: src/readelf.c:1213 +#, c-format +msgid " (% in [0].sh_size)" +msgstr " (% in [0].sh_size)" + +#. We managed to get the zeroth section. +#: src/readelf.c:1226 +#, c-format +msgid " (% in [0].sh_link)" +msgstr " (% in [0].sh_link)" + +#: src/readelf.c:1234 +#, c-format +msgid "" +" Section header string table index: XINDEX%s\n" +"\n" +msgstr "" +" Section header string table index: XINDEX%s\n" +"\n" + +#: src/readelf.c:1238 +#, c-format +msgid "" +" Section header string table index: %\n" +"\n" +msgstr "" +" Section header string table index: %\n" +"\n" + +#: src/readelf.c:1288 src/readelf.c:1496 +#, c-format +msgid "cannot get number of sections: %s" +msgstr "cannot get number of sections: %s" + +#: src/readelf.c:1291 +#, c-format +msgid "" +"There are %zd section headers, starting at offset %#:\n" +"\n" +msgstr "" +"There are %zd section headers, starting at offset %#:\n" +"\n" + +#: src/readelf.c:1299 +#, c-format +msgid "cannot get section header string table index: %s" +msgstr "cannot get section header string table index: %s" + +#: src/readelf.c:1302 +msgid "Section Headers:" +msgstr "Section Headers:" + +#: src/readelf.c:1305 +msgid "" +"[Nr] Name Type Addr Off Size ES Flags Lk " +"Inf Al" +msgstr "" +"[Nr] Name Type Addr Off Size ES Flags Lk " +"Inf Al" + +#: src/readelf.c:1307 +msgid "" +"[Nr] Name Type Addr Off Size ES " +"Flags Lk Inf Al" +msgstr "" +"[Nr] Name Type Addr Off Size ES " +"Flags Lk Inf Al" + +#: src/readelf.c:1312 +msgid " [Compression Size Al]" +msgstr " [Compression Size Al]" + +#: src/readelf.c:1314 +msgid " [Compression Size Al]" +msgstr " [Compression Size Al]" + +#: src/readelf.c:1392 +#, c-format +msgid "bad compression header for section %zd: %s" +msgstr "bad compression header for section %zd: %s" + +#: src/readelf.c:1403 +#, c-format +msgid "bad gnu compressed size for section %zd: %s" +msgstr "bad gnu compressed size for section %zd: %s" + +#: src/readelf.c:1421 +msgid "Program Headers:" +msgstr "Program Headers:" + +#: src/readelf.c:1423 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" +msgstr "" +" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" + +#: src/readelf.c:1426 +msgid "" +" Type Offset VirtAddr PhysAddr FileSiz " +"MemSiz Flg Align" +msgstr "" +" Type Offset VirtAddr PhysAddr FileSiz " +"MemSiz Flg Align" + +#: src/readelf.c:1483 +#, c-format +msgid "\t[Requesting program interpreter: %s]\n" +msgstr "\t[Requesting program interpreter: %s]\n" + +#: src/readelf.c:1508 +msgid "" +"\n" +" Section to Segment mapping:\n" +" Segment Sections..." +msgstr "" +"\n" +" Section to Segment mapping:\n" +" Segment Sections..." + +#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#, c-format +msgid "cannot get program header: %s" +msgstr "cannot get program header: %s" + +#: src/readelf.c:1663 +#, 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] "" +"\n" +"COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entry:\n" +msgstr[1] "" +"\n" +"COMDAT section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entries:\n" + +#: src/readelf.c:1668 +#, 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] "" +"\n" +"Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entry:\n" +msgstr[1] "" +"\n" +"Section group [%2zu] ‘%s’ with signature ‘%s’ contains %zu entries:\n" + +#: src/readelf.c:1676 +msgid "" +msgstr "" + +#: src/readelf.c:1690 +msgid "" +msgstr "" + +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 +msgid "Couldn't uncompress section" +msgstr "Couldn't uncompress section" + +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 +#, c-format +msgid "cannot get section [%zd] header: %s" +msgstr "cannot get section [%zd] header: %s" + +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 +#, c-format +msgid "invalid sh_link value in section %zu" +msgstr "invalid sh_link value in section %zu" + +#: src/readelf.c:1889 +#, c-format +msgid "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" +msgstr[1] "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" + +#: src/readelf.c:1902 +#, c-format +msgid "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08\n" +msgid_plural "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08\n" +msgstr[0] "" +"\n" +"Dynamic segment contains %lu entry:\n" +" Addr: %#0* Offset: %#08\n" +msgstr[1] "" +"\n" +"Dynamic segment contains %lu entries:\n" +" Addr: %#0* Offset: %#08\n" + +#: src/readelf.c:1912 +msgid " Type Value\n" +msgstr " Type Value\n" + +#: src/readelf.c:1921 +msgid "cannot get string table by using dynamic segment" +msgstr "cannot get string table by using dynamic segment" + +#: src/readelf.c:1960 +#, c-format +msgid "Shared library: [%s]\n" +msgstr "Shared library: [%s]\n" + +#: src/readelf.c:1964 +#, c-format +msgid "Library soname: [%s]\n" +msgstr "Library soname: [%s]\n" + +#: src/readelf.c:1968 +#, c-format +msgid "Library rpath: [%s]\n" +msgstr "Library rpath: [%s]\n" + +#: src/readelf.c:1972 +#, c-format +msgid "Library runpath: [%s]\n" +msgstr "Library runpath: [%s]\n" + +#: src/readelf.c:1993 +#, c-format +msgid "% (bytes)\n" +msgstr "% (bytes)\n" + +#: src/readelf.c:2109 src/readelf.c:2298 +#, c-format +msgid "" +"\n" +"Invalid symbol table at offset %#0\n" +msgstr "" +"\n" +"Invalid symbol table at offset %#0\n" + +#: src/readelf.c:2126 src/readelf.c:2315 +#, c-format +msgid "" +"\n" +"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0 " +"contains %d entry:\n" +msgid_plural "" +"\n" +"Relocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0 " +"contains %d entries:\n" +msgstr[0] "" +"\n" +"Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset %#0 " +"contains %d entry:\n" +msgstr[1] "" +"\n" +"Relocation section [%2zu] ‘%s’ for section [%2u] ‘%s’ at offset %#0 " +"contains %d entries:\n" + +#. The .rel.dyn section does not refer to a specific section but +#. instead of section index zero. Do not try to print a section +#. name. +#. 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. +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 +#, c-format +msgid "" +"\n" +"Relocation section [%2u] '%s' at offset %#0 contains %d entry:\n" +msgid_plural "" +"\n" +"Relocation section [%2u] '%s' at offset %#0 contains %d entries:\n" +msgstr[0] "" +"\n" +"Relocation section [%2u] ‘%s’ at offset %#0 contains %d entry:\n" +msgstr[1] "" +"\n" +"Relocation section [%2u] ‘%s’ at offset %#0 contains %d entries:\n" + +#: src/readelf.c:2151 +msgid " Offset Type Value Name\n" +msgstr " Offset Type Value Name\n" + +#: src/readelf.c:2153 +msgid " Offset Type Value Name\n" +msgstr " Offset Type Value Name\n" + +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 +msgid "" +msgstr "" + +#: src/readelf.c:2340 +msgid " Offset Type Value Addend Name\n" +msgstr " Offset Type Value Addend Name\n" + +#: src/readelf.c:2342 +msgid " Offset Type Value Addend Name\n" +msgstr "" +" Offset Type Value Addend Name\n" + +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "bad dynamic symbol" + +#: src/readelf.c:2868 +#, 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] "" +"\n" +"Symbol table [%2u] ‘%s’ contains %u entry:\n" +msgstr[1] "" +"\n" +"Symbol table [%2u] ‘%s’ contains %u entries:\n" + +#: src/readelf.c:2873 +#, c-format +msgid " %lu local symbol String table: [%2u] '%s'\n" +msgid_plural " %lu local symbols String table: [%2u] '%s'\n" +msgstr[0] " %lu local symbol String table: [%2u] ‘%s’\n" +msgstr[1] " %lu local symbols String table: [%2u] ‘%s’\n" + +#: src/readelf.c:2881 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num: Value Size Type Bind Vis Ndx Name\n" + +#: src/readelf.c:2883 +msgid " Num: Value Size Type Bind Vis Ndx Name\n" +msgstr " Num: Value Size Type Bind Vis Ndx Name\n" + +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "Dynamic symbol information is not available for displaying symbols." + +#: src/readelf.c:3102 +msgid "none" +msgstr "none" + +#: src/readelf.c:3119 +msgid "| " +msgstr "| " + +#: src/readelf.c:3149 +#, c-format +msgid "" +"\n" +"Version needs section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Version needs section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Version needs section [%2u] ‘%s’ contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" +msgstr[1] "" +"\n" +"Version needs section [%2u] ‘%s’ contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" + +#: src/readelf.c:3170 +#, c-format +msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" +msgstr " %#06x: Version: %hu File: %s Cnt: %hu\n" + +#: src/readelf.c:3183 +#, c-format +msgid " %#06x: Name: %s Flags: %s Version: %hu\n" +msgstr " %#06x: Name: %s Flags: %s Version: %hu\n" + +#: src/readelf.c:3225 +#, c-format +msgid "" +"\n" +"Version definition section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgid_plural "" +"\n" +"Version definition section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Version definition section [%2u] ‘%s’ contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" +msgstr[1] "" +"\n" +"Version definition section [%2u] ‘%s’ contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" + +#: src/readelf.c:3253 +#, c-format +msgid " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" +msgstr " %#06x: Version: %hd Flags: %s Index: %hd Cnt: %hd Name: %s\n" + +#: src/readelf.c:3268 +#, c-format +msgid " %#06x: Parent %d: %s\n" +msgstr " %#06x: Parent %d: %s\n" + +#. Print the header. +#: src/readelf.c:3528 +#, c-format +msgid "" +"\n" +"Version symbols section [%2u] '%s' contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'" +msgid_plural "" +"\n" +"Version symbols section [%2u] '%s' contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] '%s'" +msgstr[0] "" +"\n" +"Version symbols section [%2u] ‘%s’ contains %d entry:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’" +msgstr[1] "" +"\n" +"Version symbols section [%2u] ‘%s’ contains %d entries:\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’" + +#: src/readelf.c:3556 +msgid " 0 *local* " +msgstr " 0 *local* " + +#: src/readelf.c:3561 +msgid " 1 *global* " +msgstr " 1 *global* " + +#: src/readelf.c:3603 +#, c-format +msgid "" +"\n" +"Histogram for bucket list length in section [%2u] '%s' (total of %d " +"bucket):\n" +" Addr: %#0* Offset: %#08 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* Offset: %#08 Link to section: [%2u] '%s'\n" +msgstr[0] "" +"\n" +"Histogram for bucket list length in section [%2u] ‘%s’ (total of %d " +"bucket):\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" +msgstr[1] "" +"\n" +"Histogram for bucket list length in section [%2u] ‘%s’ (total of %d " +"buckets):\n" +" Addr: %#0* Offset: %#08 Link to section: [%2u] ‘%s’\n" + +#: src/readelf.c:3625 +#, no-c-format +msgid " Length Number % of total Coverage\n" +msgstr " Length Number % of total Coverage\n" + +#: src/readelf.c:3627 +#, c-format +msgid " 0 %6 %5.1f%%\n" +msgstr " 0 %6 %5.1f%%\n" + +#: src/readelf.c:3634 +#, c-format +msgid "%7d %6 %5.1f%% %5.1f%%\n" +msgstr "%7d %6 %5.1f%% %5.1f%%\n" + +#: src/readelf.c:3647 +#, c-format +msgid "" +" Average number of tests: successful lookup: %f\n" +"\t\t\t unsuccessful lookup: %f\n" +msgstr "" +" Average number of tests: successful lookup: %f\n" +"\t\t\t unsuccessful lookup: %f\n" + +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 +#, c-format +msgid "cannot get data for section %d: %s" +msgstr "cannot get data for section %d: %s" + +#: src/readelf.c:3673 +#, c-format +msgid "invalid data in sysv.hash section %d" +msgstr "invalid data in sysv.hash section %d" + +#: src/readelf.c:3702 +#, c-format +msgid "invalid chain in sysv.hash section %d" +msgstr "invalid chain in sysv.hash section %d" + +#: src/readelf.c:3737 +#, c-format +msgid "invalid data in sysv.hash64 section %d" +msgstr "invalid data in sysv.hash64 section %d" + +#: src/readelf.c:3768 +#, c-format +msgid "invalid chain in sysv.hash64 section %d" +msgstr "invalid chain in sysv.hash64 section %d" + +#: src/readelf.c:3804 +#, c-format +msgid "invalid data in gnu.hash section %d" +msgstr "invalid data in gnu.hash section %d" + +#: src/readelf.c:3870 +#, c-format +msgid "" +" Symbol Bias: %u\n" +" Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" +msgstr "" +" Symbol Bias: %u\n" +" Bitmask Size: %zu bytes %%% bits set 2nd hash shift: %u\n" + +#: src/readelf.c:3955 +#, c-format +msgid "" +"\n" +"Library list section [%2zu] '%s' at offset %#0 contains %d entry:\n" +msgid_plural "" +"\n" +"Library list section [%2zu] '%s' at offset %#0 contains %d entries:\n" +msgstr[0] "" +"\n" +"Library list section [%2zu] ‘%s’ at offset %#0 contains %d entry:\n" +msgstr[1] "" +"\n" +"Library list section [%2zu] ‘%s’ at offset %#0 contains %d entries:\n" + +#: src/readelf.c:3969 +msgid "" +" Library Time Stamp Checksum Version " +"Flags" +msgstr "" +" Library Time Stamp Checksum Version " +"Flags" + +#: src/readelf.c:4029 +#, c-format +msgid "" +"\n" +"Object attributes section [%2zu] '%s' of % bytes at offset " +"%#0:\n" +msgstr "" +"\n" +"Object attributes section [%2zu] ‘%s’ of % bytes at offset " +"%#0:\n" + +#: src/readelf.c:4046 +msgid " Owner Size\n" +msgstr " Owner Size\n" + +#: src/readelf.c:4070 +#, c-format +msgid " %-13s %4\n" +msgstr " %-13s %4\n" + +#. Unknown subsection, print and skip. +#: src/readelf.c:4109 +#, c-format +msgid " %-4u %12\n" +msgstr " %-4u %12\n" + +#. Tag_File +#: src/readelf.c:4114 +#, c-format +msgid " File: %11\n" +msgstr " File: %11\n" + +#: src/readelf.c:4164 +#, c-format +msgid " %s: %, %s\n" +msgstr " %s: %, %s\n" + +#: src/readelf.c:4167 +#, c-format +msgid " %s: %\n" +msgstr " %s: %\n" + +#: src/readelf.c:4170 +#, c-format +msgid " %s: %s\n" +msgstr " %s: %s\n" + +#: src/readelf.c:4180 +#, c-format +msgid " %u: %\n" +msgstr " %u: %\n" + +#: src/readelf.c:4183 +#, c-format +msgid " %u: %s\n" +msgstr " %u: %s\n" + +#: src/readelf.c:4221 +msgid "Couldn't get data from section" +msgstr "Couldn't get data from section" + +#: src/readelf.c:4286 +msgid "sprintf failure" +msgstr "sprintf failure" + +#: src/readelf.c:4770 +msgid "empty block" +msgstr "empty block" + +#: src/readelf.c:4773 +#, c-format +msgid "%zu byte block:" +msgstr "%zu byte block:" + +#: src/readelf.c:5251 +#, c-format +msgid "%*s[%2] %s \n" +msgstr "%*s[%2] %s \n" + +#: src/readelf.c:5423 +#, c-format +msgid "%s %# used with different address sizes" +msgstr "%s %# used with different address sizes" + +#: src/readelf.c:5430 +#, c-format +msgid "%s %# used with different offset sizes" +msgstr "%s %# used with different offset sizes" + +#: src/readelf.c:5437 +#, c-format +msgid "%s %# used with different base addresses" +msgstr "%s %# used with different base addresses" + +#: src/readelf.c:5444 +#, c-format +msgid "%s %# used with different attribute %s and %s" +msgstr "%s %# used with different attribute %s and %s" + +#: src/readelf.c:5544 +#, c-format +msgid " [%6tx] \n" +msgstr " [%6tx] \n" + +#: src/readelf.c:5552 +#, c-format +msgid " [%6tx] ... % bytes ...\n" +msgstr " [%6tx] ... % bytes ...\n" + +#: src/readelf.c:5658 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" [ Code]\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +" [ Code]\n" + +#: src/readelf.c:5666 +#, c-format +msgid "" +"\n" +"Abbreviation section at offset %:\n" +msgstr "" +"\n" +"Abbreviation section at offset %:\n" + +#: src/readelf.c:5679 +#, c-format +msgid " *** error while reading abbreviation: %s\n" +msgstr " *** error while reading abbreviation: %s\n" + +#: src/readelf.c:5695 +#, c-format +msgid " [%5u] offset: %, children: %s, tag: %s\n" +msgstr " [%5u] offset: %, children: %s, tag: %s\n" + +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" + +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 +#, c-format +msgid " Length: %8\n" +msgstr " Length: %8\n" + +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 +#, c-format +msgid " DWARF version: %8\n" +msgstr " DWARF version: %8\n" + +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 +#, c-format +msgid " Address size: %8\n" +msgstr " Address size: %8\n" + +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 +#, c-format +msgid " Segment size: %8\n" +msgstr " Segment size: %8\n" + +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 +#, c-format +msgid "Unknown version" +msgstr "Unknown version" + +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 +#, c-format +msgid "unsupported address size" +msgstr "unsupported address size" + +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 +#, c-format +msgid "unsupported segment size" +msgstr "unsupported segment size" + +#: src/readelf.c:5952 +#, c-format +msgid "cannot get .debug_aranges content: %s" +msgstr "cannot get .debug_aranges content: %s" + +#: src/readelf.c:5967 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %# contains %zu entry:\n" +msgid_plural "" +"\n" +"DWARF section [%2zu] '%s' at offset %# contains %zu entries:\n" +msgstr[0] "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %# contains %zu entry:\n" +msgstr[1] "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %# contains %zu entries:\n" + +#: src/readelf.c:5998 +#, c-format +msgid " [%*zu] ???\n" +msgstr " [%*zu] ???\n" + +#: src/readelf.c:6000 +#, c-format +msgid "" +" [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" +msgstr "" +" [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" + +#: src/readelf.c:6038 src/readelf.c:8981 +#, c-format +msgid "" +"\n" +"Table at offset %zu:\n" +msgstr "" +"\n" +"Table at offset %zu:\n" + +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 +#, c-format +msgid "invalid data in section [%zu] '%s'" +msgstr "invalid data in section [%zu] ‘%s’" + +#: src/readelf.c:6058 +#, c-format +msgid "" +"\n" +" Length: %6\n" +msgstr "" +"\n" +" Length: %6\n" + +#: src/readelf.c:6070 +#, c-format +msgid " DWARF version: %6\n" +msgstr " DWARF version: %6\n" + +#: src/readelf.c:6074 +#, c-format +msgid "unsupported aranges version" +msgstr "unsupported aranges version" + +#: src/readelf.c:6085 +#, c-format +msgid " CU offset: %6\n" +msgstr " CU offset: %6\n" + +#: src/readelf.c:6091 +#, c-format +msgid " Address size: %6\n" +msgstr " Address size: %6\n" + +#: src/readelf.c:6102 +#, c-format +msgid "" +" Segment size: %6\n" +"\n" +msgstr "" +" Segment size: %6\n" +"\n" + +#: src/readelf.c:6157 +#, c-format +msgid " %zu padding bytes\n" +msgstr " %zu padding bytes\n" + +#: src/readelf.c:6219 src/readelf.c:9727 +#, c-format +msgid "" +"Table at Offset 0x%:\n" +"\n" +msgstr "" +"Table at Offset 0x%:\n" +"\n" + +#: src/readelf.c:6274 src/readelf.c:9782 +#, c-format +msgid " Offset entries: %8\n" +msgstr " Offset entries: %8\n" + +#: src/readelf.c:6290 src/readelf.c:9798 +#, c-format +msgid " Unknown CU base: " +msgstr " Unknown CU base: " + +#: src/readelf.c:6292 src/readelf.c:9800 +#, c-format +msgid " CU [%6] base: " +msgstr " CU [%6] base: " + +#: src/readelf.c:6298 src/readelf.c:9806 +#, c-format +msgid " Not associated with a CU.\n" +msgstr " Not associated with a CU.\n" + +#: src/readelf.c:6309 src/readelf.c:9817 +#, c-format +msgid "too many offset entries for unit length" +msgstr "too many offset entries for unit length" + +#: src/readelf.c:6313 src/readelf.c:9821 +#, c-format +msgid " Offsets starting at 0x%:\n" +msgstr " Offsets starting at 0x%:\n" + +#: src/readelf.c:6365 +#, c-format +msgid "invalid range list data" +msgstr "invalid range list data" + +#: src/readelf.c:6550 src/readelf.c:10156 +#, c-format +msgid "" +" %zu padding bytes\n" +"\n" +msgstr "" +" %zu padding bytes\n" +"\n" + +#: src/readelf.c:6598 src/readelf.c:10205 +#, c-format +msgid "" +"\n" +" Unknown CU base: " +msgstr "" +"\n" +" Unknown CU base: " + +#: src/readelf.c:6600 src/readelf.c:10207 +#, c-format +msgid "" +"\n" +" CU [%6] base: " +msgstr "" +"\n" +" CU [%6] base: " + +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 +#, c-format +msgid " [%6tx] \n" +msgstr " [%6tx] \n" + +#: src/readelf.c:6634 src/readelf.c:10343 +msgid "base address" +msgstr "base address" + +#: src/readelf.c:6644 src/readelf.c:10353 +#, c-format +msgid " [%6tx] empty list\n" +msgstr " [%6tx] empty list\n" + +#: src/readelf.c:6908 +msgid " \n" +msgstr " \n" + +#: src/readelf.c:7165 +#, c-format +msgid "cannot get ELF: %s" +msgstr "cannot get ELF: %s" + +#: src/readelf.c:7189 +#, c-format +msgid "" +"\n" +"Call frame information section [%2zu] '%s' at offset %#:\n" +msgstr "" +"\n" +"Call frame information section [%2zu] ‘%s’ at offset %#:\n" + +#: src/readelf.c:7239 +#, c-format +msgid "" +"\n" +" [%6tx] Zero terminator\n" +msgstr "" +"\n" +" [%6tx] Zero terminator\n" + +#: src/readelf.c:7343 src/readelf.c:7497 +#, c-format +msgid "invalid augmentation length" +msgstr "invalid augmentation length" + +#: src/readelf.c:7358 +msgid "FDE address encoding: " +msgstr "FDE address encoding: " + +#: src/readelf.c:7364 +msgid "LSDA pointer encoding: " +msgstr "LSDA pointer encoding: " + +#: src/readelf.c:7474 +#, c-format +msgid " (offset: %#)" +msgstr " (offset: %#)" + +#: src/readelf.c:7481 +#, c-format +msgid " (end offset: %#)" +msgstr " (end offset: %#)" + +#: src/readelf.c:7518 +#, c-format +msgid " %-26sLSDA pointer: %#\n" +msgstr " %-26sLSDA pointer: %#\n" + +#: src/readelf.c:7603 +#, c-format +msgid "DIE [%] cannot get attribute code: %s" +msgstr "DIE [%] cannot get attribute code: %s" + +#: src/readelf.c:7613 +#, c-format +msgid "DIE [%] cannot get attribute form: %s" +msgstr "DIE [%] cannot get attribute form: %s" + +#: src/readelf.c:7635 +#, c-format +msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" +msgstr "DIE [%] cannot get attribute ‘%s’ (%s) value: %s" + +#: src/readelf.c:7965 +#, c-format +msgid "invalid file (%): %s" +msgstr "invalid file (%): %s" + +#: src/readelf.c:7969 +#, c-format +msgid "no srcfiles for CU [%]" +msgstr "no srcfiles for CU [%]" + +#: src/readelf.c:7973 +#, c-format +msgid "couldn't get DWARF CU: %s" +msgstr "couldn't get DWARF CU: %s" + +#: src/readelf.c:8295 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" [Offset]\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +" [Offset]\n" + +#: src/readelf.c:8345 +#, c-format +msgid "cannot get next unit: %s" +msgstr "cannot get next unit: %s" + +#: src/readelf.c:8365 +#, c-format +msgid "" +" Type unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +" Type signature: %#, Type offset: %# [%]\n" +msgstr "" +" Type unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +" Type signature: %#, Type offset: %# [%]\n" + +#: src/readelf.c:8377 +#, c-format +msgid "" +" Compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +msgstr "" +" Compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" + +#: src/readelf.c:8387 src/readelf.c:8548 +#, c-format +msgid " Unit type: %s (%)" +msgstr " Unit type: %s (%)" + +#: src/readelf.c:8414 +#, c-format +msgid "unknown version (%d) or unit type (%d)" +msgstr "unknown version (%d) or unit type (%d)" + +#: src/readelf.c:8443 +#, c-format +msgid "cannot get DIE offset: %s" +msgstr "cannot get DIE offset: %s" + +#: src/readelf.c:8452 +#, c-format +msgid "cannot get tag of DIE at offset [%] in section '%s': %s" +msgstr "cannot get tag of DIE at offset [%] in section '%s': %s" + +#: src/readelf.c:8488 +#, c-format +msgid "cannot get next DIE: %s\n" +msgstr "cannot get next DIE: %s\n" + +#: src/readelf.c:8496 +#, c-format +msgid "cannot get next DIE: %s" +msgstr "cannot get next DIE: %s" + +#: src/readelf.c:8540 +#, c-format +msgid "" +" Split compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" +msgstr "" +" Split compilation unit at offset %:\n" +" Version: %, Abbreviation section offset: %, Address size: " +"%, Offset size: %\n" + +#: src/readelf.c:8592 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +"\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +"\n" + +#: src/readelf.c:8924 +#, c-format +msgid "unknown form: %s" +msgstr "unknown form: %s" + +#. Print what we got so far. +#: src/readelf.c:9072 +#, c-format +msgid "" +"\n" +" Length: %\n" +" DWARF version: %\n" +" Prologue length: %\n" +" Address size: %zd\n" +" Segment selector size: %zd\n" +" Min instruction length: %\n" +" Max operations per instruction: %\n" +" Initial value if 'is_stmt': %\n" +" Line base: %\n" +" Line range: %\n" +" Opcode base: %\n" +"\n" +"Opcodes:\n" +msgstr "" +"\n" +" Length: %\n" +" DWARF version: %\n" +" Prologue length: %\n" +" Address size: %zd\n" +" Segment selector size: %zd\n" +" Min instruction length: %\n" +" Max operations per instruction: %\n" +" Initial value if 'is_stmt': %\n" +" Line base: %\n" +" Line range: %\n" +" Opcode base: %\n" +"\n" +"Opcodes:\n" + +#: src/readelf.c:9094 +#, c-format +msgid "cannot handle .debug_line version: %u\n" +msgstr "cannot handle .debug_line version: %u\n" + +#: src/readelf.c:9102 +#, c-format +msgid "cannot handle address size: %u\n" +msgstr "cannot handle address size: %u\n" + +#: src/readelf.c:9110 +#, c-format +msgid "cannot handle segment selector size: %u\n" +msgstr "cannot handle segment selector size: %u\n" + +#: src/readelf.c:9120 +#, c-format +msgid "invalid data at offset %tu in section [%zu] '%s'" +msgstr "invalid data at offset %tu in section [%zu] ‘%s’" + +#: src/readelf.c:9135 +#, c-format +msgid " [%*] %hhu argument\n" +msgid_plural " [%*] %hhu arguments\n" +msgstr[0] " [%*] %hhu argument\n" +msgstr[1] " [%*] %hhu arguments\n" + +#: src/readelf.c:9146 +msgid "" +"\n" +"Directory table:" +msgstr "" +"\n" +"Directory table:" + +#: src/readelf.c:9152 src/readelf.c:9229 +#, c-format +msgid " [" +msgstr " [" + +#: src/readelf.c:9223 +msgid "" +"\n" +"File name table:" +msgstr "" +"\n" +"File name table:" + +#: src/readelf.c:9284 +msgid " Entry Dir Time Size Name" +msgstr " Entry Dir Time Size Name" + +#: src/readelf.c:9330 +msgid "" +"\n" +"No line number statements." +msgstr "" +"\n" +"No line number statements." + +#: src/readelf.c:9334 +msgid "" +"\n" +"Line number statements:" +msgstr "" +"\n" +"Line number statements:" + +#: src/readelf.c:9349 +#, c-format +msgid "invalid maximum operations per instruction is zero" +msgstr "invalid maximum operations per instruction is zero" + +#: src/readelf.c:9383 +#, c-format +msgid " special opcode %u: address+%u = " +msgstr " special opcode %u: address+%u = " + +#: src/readelf.c:9387 +#, c-format +msgid ", op_index = %u, line%+d = %zu\n" +msgstr ", op_index = %u, line%+d = %zu\n" + +#: src/readelf.c:9390 +#, c-format +msgid ", line%+d = %zu\n" +msgstr ", line%+d = %zu\n" + +#: src/readelf.c:9408 +#, c-format +msgid " extended opcode %u: " +msgstr " extended opcode %u: " + +#: src/readelf.c:9413 +msgid " end of sequence" +msgstr " end of sequence" + +#: src/readelf.c:9431 +#, c-format +msgid " set address to " +msgstr " set address to " + +#: src/readelf.c:9459 +#, c-format +msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" +msgstr " define new file: dir=%u, mtime=%, length=%, name=%s\n" + +#: src/readelf.c:9473 +#, c-format +msgid " set discriminator to %u\n" +msgstr " set discriminator to %u\n" + +#: src/readelf.c:9500 +#, c-format +msgid " set inlined context %u, function name %s (0x%x)\n" +msgstr " set inlined context %u, function name %s (0x%x)\n" + +#: src/readelf.c:9524 +#, c-format +msgid " set function name %s (0x%x)\n" +msgstr " set function name %s (0x%x)\n" + +#. Unknown, ignore it. +#: src/readelf.c:9531 +msgid " unknown opcode" +msgstr " unknown opcode" + +#. Takes no argument. +#: src/readelf.c:9543 +msgid " copy" +msgstr " copy" + +#: src/readelf.c:9554 +#, c-format +msgid " advance address by %u to " +msgstr " advance address by %u to " + +#: src/readelf.c:9558 src/readelf.c:9619 +#, c-format +msgid ", op_index to %u" +msgstr ", op_index to %u" + +#: src/readelf.c:9570 +#, c-format +msgid " advance line by constant %d to %\n" +msgstr " advance line by constant %d to %\n" + +#: src/readelf.c:9580 +#, c-format +msgid " set file to %\n" +msgstr " set file to %\n" + +#: src/readelf.c:9591 +#, c-format +msgid " set column to %\n" +msgstr " set column to %\n" + +#: src/readelf.c:9598 +#, c-format +msgid " set '%s' to %\n" +msgstr " set ‘%s’ to %\n" + +#. Takes no argument. +#: src/readelf.c:9604 +msgid " set basic block flag" +msgstr " set basic block flag" + +#: src/readelf.c:9615 +#, c-format +msgid " advance address by constant %u to " +msgstr " advance address by constant %u to " + +#: src/readelf.c:9635 +#, c-format +msgid " advance address by fixed value %u to \n" +msgstr " advance address by fixed value %u to \n" + +#. Takes no argument. +#: src/readelf.c:9645 +msgid " set prologue end flag" +msgstr " set prologue end flag" + +#. Takes no argument. +#: src/readelf.c:9650 +msgid " set epilogue begin flag" +msgstr " set epilogue begin flag" + +#: src/readelf.c:9660 +#, c-format +msgid " set isa to %u\n" +msgstr " set isa to %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:9669 +#, c-format +msgid " unknown opcode with % parameter:" +msgid_plural " unknown opcode with % parameters:" +msgstr[0] " unknown opcode with % parameter:" +msgstr[1] " unknown opcode with % parameters:" + +#: src/readelf.c:9870 +#, c-format +msgid " \n" +msgstr " \n" + +#: src/readelf.c:9910 +#, c-format +msgid "invalid loclists data" +msgstr "invalid loclists data" + +#: src/readelf.c:10380 src/readelf.c:11425 +msgid " \n" +msgstr " \n" + +#: src/readelf.c:10511 +#, c-format +msgid "%*s*** non-terminated string at end of section" +msgstr "%*s*** non-terminated string at end of section" + +#: src/readelf.c:10534 +#, c-format +msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" +msgstr "%*s*** missing DW_MACINFO_start_file argument at end of section" + +#: src/readelf.c:10629 +#, c-format +msgid " Offset: 0x%\n" +msgstr " Offset: 0x%\n" + +#: src/readelf.c:10641 +#, c-format +msgid " Version: %\n" +msgstr " Version: %\n" + +#: src/readelf.c:10647 src/readelf.c:11546 +#, c-format +msgid " unknown version, cannot parse section\n" +msgstr " unknown version, cannot parse section\n" + +#: src/readelf.c:10654 +#, c-format +msgid " Flag: 0x%" +msgstr " Flag: 0x%" + +#: src/readelf.c:10683 +#, c-format +msgid " Offset length: %\n" +msgstr " Offset length: %\n" + +#: src/readelf.c:10691 +#, c-format +msgid " .debug_line offset: 0x%\n" +msgstr " .debug_line offset: 0x%\n" + +#: src/readelf.c:10716 +#, c-format +msgid " extension opcode table, % items:\n" +msgstr " extension opcode table, % items:\n" + +#: src/readelf.c:10723 +#, c-format +msgid " [%]" +msgstr " [%]" + +#: src/readelf.c:10735 +#, c-format +msgid " % arguments:" +msgstr " % arguments:" + +#: src/readelf.c:10750 +#, c-format +msgid " no arguments." +msgstr " no arguments." + +#: src/readelf.c:10951 +#, c-format +msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" +msgstr " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" + +#: src/readelf.c:11006 +#, c-format +msgid "" +"\n" +"DWARF section [%2zu] '%s' at offset %#:\n" +" %*s String\n" +msgstr "" +"\n" +"DWARF section [%2zu] ‘%s’ at offset %#:\n" +" %*s String\n" + +#. TRANS: the debugstr| prefix makes the string unique. +#: src/readelf.c:11011 +msgctxt "debugstr" +msgid "Offset" +msgstr "Offset" + +#: src/readelf.c:11021 +#, c-format +msgid " *** error, missing string terminator\n" +msgstr " *** error, missing string terminator\n" + +#: src/readelf.c:11143 +#, c-format +msgid " Length: %8\n" +msgstr " Length: %8\n" + +#: src/readelf.c:11145 +#, c-format +msgid " Offset size: %8\n" +msgstr " Offset size: %8\n" + +#: src/readelf.c:11159 +#, c-format +msgid " DWARF version: %8\n" +msgstr " DWARF version: %8\n" + +#: src/readelf.c:11168 +#, c-format +msgid " Padding: %8\n" +msgstr " Padding: %8\n" + +#: src/readelf.c:11222 +#, c-format +msgid "" +"\n" +"Call frame search table section [%2zu] '.eh_frame_hdr':\n" +msgstr "" +"\n" +"Call frame search table section [%2zu] '.eh_frame_hdr':\n" + +#: src/readelf.c:11324 +#, c-format +msgid "" +"\n" +"Exception handling table section [%2zu] '.gcc_except_table':\n" +msgstr "" +"\n" +"Exception handling table section [%2zu] '.gcc_except_table':\n" + +#: src/readelf.c:11347 +#, c-format +msgid " LPStart encoding: %#x " +msgstr " LPStart encoding: %#x " + +#: src/readelf.c:11359 +#, c-format +msgid " TType encoding: %#x " +msgstr " TType encoding: %#x " + +#: src/readelf.c:11376 +#, c-format +msgid " Call site encoding: %#x " +msgstr " Call site encoding: %#x " + +#: src/readelf.c:11391 +msgid "" +"\n" +" Call site table:" +msgstr "" +"\n" +" Call site table:" + +#: src/readelf.c:11407 +#, c-format +msgid "" +" [%4u] Call site start: %#\n" +" Call site length: %\n" +" Landing pad: %#\n" +" Action: %u\n" +msgstr "" +" [%4u] Call site start: %#\n" +" Call site length: %\n" +" Landing pad: %#\n" +" Action: %u\n" + +#: src/readelf.c:11480 +#, c-format +msgid "invalid TType encoding" +msgstr "invalid TType encoding" + +#: src/readelf.c:11507 +#, c-format +msgid "" +"\n" +"GDB section [%2zu] '%s' at offset %# contains % bytes :\n" +msgstr "" +"\n" +"GDB section [%2zu] ‘%s’ at offset %# contains % bytes :\n" + +#: src/readelf.c:11536 +#, c-format +msgid " Version: %\n" +msgstr " Version: %\n" + +#: src/readelf.c:11555 +#, c-format +msgid " CU offset: %#\n" +msgstr " CU offset: %#\n" + +#: src/readelf.c:11562 +#, c-format +msgid " TU offset: %#\n" +msgstr " TU offset: %#\n" + +#: src/readelf.c:11569 +#, c-format +msgid " address offset: %#\n" +msgstr " address offset: %#\n" + +#: src/readelf.c:11576 +#, c-format +msgid " symbol offset: %#\n" +msgstr " symbol offset: %#\n" + +#: src/readelf.c:11586 +#, c-format +msgid " shortcut offset: %#\n" +msgstr " shortcut offset: %#\n" + +#: src/readelf.c:11594 +#, c-format +msgid " constant offset: %#\n" +msgstr " constant offset: %#\n" + +#: src/readelf.c:11608 +#, c-format +msgid "" +"\n" +" CU list at offset %# contains %zu entries:\n" +msgstr "" +"\n" +" CU list at offset %# contains %zu entries:\n" + +#: src/readelf.c:11633 +#, c-format +msgid "" +"\n" +" TU list at offset %# contains %zu entries:\n" +msgstr "" +"\n" +" TU list at offset %# contains %zu entries:\n" + +#: src/readelf.c:11662 +#, c-format +msgid "" +"\n" +" Address list at offset %# contains %zu entries:\n" +msgstr "" +"\n" +" Address list at offset %# contains %zu entries:\n" + +#: src/readelf.c:11705 +#, c-format +msgid "" +"\n" +" Symbol table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +" Symbol table at offset %# contains %zu slots:\n" + +#: src/readelf.c:11790 +#, c-format +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "Language of main: %s\n" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "Name of main: " + +#: src/readelf.c:11886 +#, c-format +msgid "cannot get debug context descriptor: %s" +msgstr "cannot get debug context descriptor: %s" + +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 +#, c-format +msgid "cannot convert core note data: %s" +msgstr "cannot convert core note data: %s" + +#: src/readelf.c:12616 +#, c-format +msgid "" +"\n" +"%*s... ..." +msgstr "" +"\n" +"%*s... ..." + +#: src/readelf.c:13118 +msgid " Owner Data size Type\n" +msgstr " Owner Data size Type\n" + +#: src/readelf.c:13146 +#, c-format +msgid " %-13.*s %9 %s\n" +msgstr " %-13.*s %9 %s\n" + +#: src/readelf.c:13198 +#, c-format +msgid "cannot get content of note: %s" +msgstr "cannot get content of note: %s" + +#: src/readelf.c:13231 +#, c-format +msgid "" +"\n" +"Note section [%2zu] '%s' of % bytes at offset %#0:\n" +msgstr "" +"\n" +"Note section [%2zu] ‘%s’ of % bytes at offset %#0:\n" + +#: src/readelf.c:13254 +#, c-format +msgid "" +"\n" +"Note segment of % bytes at offset %#0:\n" +msgstr "" +"\n" +"Note segment of % bytes at offset %#0:\n" + +#: src/readelf.c:13301 +#, c-format +msgid "" +"\n" +"Section [%zu] '%s' has no data to dump.\n" +msgstr "" +"\n" +"Section [%zu] ‘%s’ has no data to dump.\n" + +#: src/readelf.c:13328 src/readelf.c:13379 +#, c-format +msgid "cannot get data for section [%zu] '%s': %s" +msgstr "cannot get data for section [%zu] '%s': %s" + +#: src/readelf.c:13333 +#, c-format +msgid "" +"\n" +"Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" +msgstr "" +"\n" +"Hex dump of section [%zu] '%s', % bytes at offset %#0:\n" + +#: src/readelf.c:13338 +#, c-format +msgid "" +"\n" +"Hex dump of section [%zu] '%s', % bytes (%zd uncompressed) at offset " +"%#0:\n" +msgstr "" +"\n" +"Hex dump of section [%zu] '%s', % bytes (%zd uncompressed) at offset " +"%#0:\n" + +#: src/readelf.c:13352 +#, c-format +msgid "" +"\n" +"Section [%zu] '%s' has no strings to dump.\n" +msgstr "" +"\n" +"Section [%zu] ‘%s’ has no strings to dump.\n" + +#: src/readelf.c:13384 +#, c-format +msgid "" +"\n" +"String section [%zu] '%s' contains % bytes at offset %#0:\n" +msgstr "" +"\n" +"String section [%zu] ‘%s’ contains % bytes at offset %#0:\n" + +#: src/readelf.c:13389 +#, c-format +msgid "" +"\n" +"String section [%zu] '%s' contains % bytes (%zd uncompressed) at " +"offset %#0:\n" +msgstr "" +"\n" +"String section [%zu] ‘%s’ contains % bytes (%zd uncompressed) at " +"offset %#0:\n" + +#: src/readelf.c:13437 +#, c-format +msgid "" +"\n" +"section [%lu] does not exist" +msgstr "" +"\n" +"section [%lu] does not exist" + +#: src/readelf.c:13467 +#, c-format +msgid "" +"\n" +"section '%s' does not exist" +msgstr "" +"\n" +"section ‘%s’ does not exist" + +#: src/readelf.c:13522 +#, c-format +msgid "cannot get symbol index of archive '%s': %s" +msgstr "cannot get symbol index of archive '%s': %s" + +#: src/readelf.c:13525 +#, c-format +msgid "" +"\n" +"Archive '%s' has no symbol index\n" +msgstr "" +"\n" +"Archive ‘%s’ has no symbol index\n" + +#: src/readelf.c:13529 +#, c-format +msgid "" +"\n" +"Index of archive '%s' has %zu entries:\n" +msgstr "" +"\n" +"Index of archive ‘%s’ has %zu entries:\n" + +#: src/readelf.c:13547 +#, c-format +msgid "cannot extract member at offset %zu in '%s': %s" +msgstr "cannot extract member at offset %zu in '%s': %s" + +#: src/readelf.c:13552 +#, c-format +msgid "Archive member '%s' contains:\n" +msgstr "Archive member ‘%s’ contains:\n" + +#: src/size.c:55 +msgid "" +"Use the output format FORMAT. FORMAT can be `bsd' or `sysv'. The default " +"is `bsd'" +msgstr "" +"Use the output format FORMAT. FORMAT can be ‘bsd’ or ‘sysv’. The default " +"is ‘bsd’" + +#: src/size.c:57 +msgid "Same as `--format=sysv'" +msgstr "Same as ‘--format=sysv’" + +#: src/size.c:58 +msgid "Same as `--format=bsd'" +msgstr "Same as ‘--format=bsd’" + +#: src/size.c:61 +msgid "Same as `--radix=10'" +msgstr "Same as ‘--radix=10’" + +#: src/size.c:62 +msgid "Same as `--radix=8'" +msgstr "Same as ‘--radix=8’" + +#: src/size.c:63 +msgid "Same as `--radix=16'" +msgstr "Same as ‘--radix=16’" + +#: src/size.c:65 +msgid "Similar to `--format=sysv' output but in one line" +msgstr "Similar to ‘--format=sysv’ output but in one line" + +#: src/size.c:69 +msgid "Print size and permission flags for loadable segments" +msgstr "Print size and permission flags for loadable segments" + +#: src/size.c:70 +msgid "Display the total sizes (bsd only)" +msgstr "Display the total sizes (bsd only)" + +#. Short description of program. +#: src/size.c:75 +msgid "List section sizes of FILEs (a.out by default)." +msgstr "List section sizes of FILEs (a.out by default)." + +#: src/size.c:239 +#, c-format +msgid "Invalid format: %s" +msgstr "Invalid format: %s" + +#: src/size.c:250 +#, c-format +msgid "Invalid radix: %s" +msgstr "Invalid radix: %s" + +#: src/size.c:309 +#, c-format +msgid "%s: file format not recognized" +msgstr "%s: file format not recognized" + +#: src/size.c:327 +msgctxt "bsd" +msgid "text" +msgstr "text" + +#: src/size.c:328 +msgctxt "bsd" +msgid "data" +msgstr "data" + +#: src/size.c:329 +msgctxt "bsd" +msgid "bss" +msgstr "bss" + +#: src/size.c:330 +msgctxt "bsd" +msgid "dec" +msgstr "dec" + +#: src/size.c:331 +msgctxt "bsd" +msgid "hex" +msgstr "hex" + +#: src/size.c:332 +msgctxt "bsd" +msgid "filename" +msgstr "filename" + +#: src/size.c:416 src/size.c:557 +#, c-format +msgid " (ex %s)" +msgstr " (ex %s)" + +#: src/size.c:418 +msgctxt "sysv" +msgid "section" +msgstr "section" + +#: src/size.c:419 +msgctxt "sysv" +msgid "size" +msgstr "size" + +#: src/size.c:420 +msgctxt "sysv" +msgid "addr" +msgstr "addr" + +#: src/size.c:449 src/size.c:452 src/size.c:455 +msgctxt "sysv" +msgid "Total" +msgstr "Total" + +#: src/size.c:479 +msgid "cannot get section header" +msgstr "cannot get section header" + +#: src/size.c:582 +msgid "(TOTALS)\n" +msgstr "(TOTALS)\n" + +#: src/stack.c:487 +#, c-format +msgid "-p PID should be a positive process id." +msgstr "-p PID should be a positive process id." + +#: src/stack.c:493 +#, c-format +msgid "Cannot open core file '%s'" +msgstr "Cannot open core file ‘%s’" + +#: src/stack.c:553 +#, c-format +msgid "-n MAXFRAMES should be 0 or higher." +msgstr "-n MAXFRAMES should be 0 or higher." + +#: src/stack.c:565 +#, c-format +msgid "-e EXEC needs a core given by --core." +msgstr "-e EXEC needs a core given by --core." + +#: src/stack.c:569 +#, c-format +msgid "-1 needs a thread id given by -p." +msgstr "-1 needs a thread id given by -p." + +#: src/stack.c:573 +#, c-format +msgid "One of -p PID or --core COREFILE should be given." +msgstr "One of -p PID or --core COREFILE should be given." + +#: src/stack.c:645 +msgid "Show stack of process PID" +msgstr "Show stack of process PID" + +#: src/stack.c:647 +msgid "Show stack found in COREFILE" +msgstr "Show stack found in COREFILE" + +#: src/stack.c:648 +msgid "(optional) EXECUTABLE that produced COREFILE" +msgstr "(optional) EXECUTABLE that produced COREFILE" + +#: src/stack.c:652 +msgid "Output selection options:" +msgstr "Output selection options:" + +#: src/stack.c:654 +msgid "Additionally show frame activation" +msgstr "Additionally show frame activation" + +#: src/stack.c:656 +msgid "Additionally try to lookup DWARF debuginfo name for frame address" +msgstr "Additionally try to lookup DWARF debuginfo name for frame address" + +#: src/stack.c:659 +msgid "" +"Additionally show inlined function frames using DWARF debuginfo if available " +"(implies -d)" +msgstr "" +"Additionally show inlined function frames using DWARF debuginfo if available " +"(implies -d)" + +#: src/stack.c:661 +msgid "Additionally show module file information" +msgstr "Additionally show module file information" + +#: src/stack.c:663 +msgid "Additionally show source file information" +msgstr "Additionally show source file information" + +#: src/stack.c:665 +msgid "" +"Show all additional information (activation, debugname, inlines, module and " +"source)" +msgstr "" +"Show all additional information (activation, debugname, inlines, module and " +"source)" + +#: src/stack.c:667 +msgid "Do not resolve address to function symbol name" +msgstr "Do not resolve address to function symbol name" + +#: src/stack.c:669 +msgid "Show raw function symbol names, do not try to demangle names" +msgstr "Show raw function symbol names, do not try to demangle names" + +#: src/stack.c:671 +msgid "Show module build-id, load address and pc offset" +msgstr "Show module build-id, load address and pc offset" + +#: src/stack.c:673 +msgid "Show the backtrace of only one thread" +msgstr "Show the backtrace of only one thread" + +#: src/stack.c:675 +msgid "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)" +msgstr "Show at most MAXFRAMES per thread (default 256, use 0 for unlimited)" + +#: src/stack.c:677 +msgid "Show module memory map with build-id, elf and debug files detected" +msgstr "Show module memory map with build-id, elf and debug files detected" + +#: 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 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 "" +"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 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." + +#: src/stack.c:760 +#, c-format +msgid "Couldn't show any frames." +msgstr "Couldn't show any frames." + +#: src/strings.c:64 +msgid "Output Selection:" +msgstr "Output Selection:" + +#: src/strings.c:65 +msgid "Scan entire file, not only loaded sections" +msgstr "Scan entire file, not only loaded sections" + +#: src/strings.c:67 +msgid "Only NUL-terminated sequences of MIN-LEN characters or more are printed" +msgstr "" +"Only NUL-terminated sequences of MIN-LEN characters or more are printed" + +#: src/strings.c:68 +msgid "" +"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, " +"{B,L} = 32-bit" +msgstr "" +"Select character size and endianness: s = 7-bit, S = 8-bit, {b,l} = 16-bit, " +"{B,L} = 32-bit" + +#: src/strings.c:72 +msgid "Print name of the file before each string." +msgstr "Print name of the file before each string." + +#: src/strings.c:74 +msgid "Print location of the string in base 8, 10, or 16 respectively." +msgstr "Print location of the string in base 8, 10, or 16 respectively." + +#: src/strings.c:75 +msgid "Alias for --radix=o" +msgstr "Alias for --radix=o" + +#. Short description of program. +#: src/strings.c:82 +msgid "Print the strings of printable characters in files." +msgstr "Print the strings of printable characters in files." + +#: src/strings.c:255 src/strings.c:290 +#, c-format +msgid "invalid value '%s' for %s parameter" +msgstr "invalid value ‘%s’ for %s parameter" + +#: src/strings.c:300 +msgid "invalid minimum length of matched string size" +msgstr "invalid minimum length of matched string size" + +#: src/strings.c:583 +msgid "lseek failed" +msgstr "lseek failed" + +#: src/strings.c:600 src/strings.c:664 +msgid "re-mmap failed" +msgstr "re-mmap failed" + +#: src/strings.c:637 +msgid "mprotect failed" +msgstr "mprotect failed" + +#: src/strings.c:726 +#, c-format +msgid "Skipping section %zd '%s' data outside file" +msgstr "Skipping section %zd ‘%s’ data outside file" + +#: src/strip.c:70 +msgid "Place stripped output into FILE" +msgstr "Place stripped output into FILE" + +#: src/strip.c:71 +msgid "Extract the removed sections into FILE" +msgstr "Extract the removed sections into FILE" + +#: src/strip.c:72 +msgid "Embed name FILE instead of -f argument" +msgstr "Embed name FILE instead of -f argument" + +#: src/strip.c:76 +msgid "Remove all debugging symbols" +msgstr "Remove all debugging symbols" + +#: src/strip.c:80 +msgid "Remove section headers (not recommended)" +msgstr "Remove section headers (not recommended)" + +#: src/strip.c:82 +msgid "Copy modified/access timestamps to the output" +msgstr "Copy modified/access timestamps to the output" + +#: src/strip.c:84 +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 reversible, needs -f)" +msgstr "" +"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)" + +#: src/strip.c:86 +msgid "" +"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)" +msgstr "" +"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)" + +#: src/strip.c:88 +msgid "Remove .comment section" +msgstr "Remove .comment section" + +#: src/strip.c:89 +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 "" +"Remove the named section. SECTION is an extended wildcard pattern. May be " +"given more than once. Only non-allocated sections can be removed." + +#: src/strip.c:90 +msgid "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." +msgstr "" +"Keep the named section. SECTION is an extended wildcard pattern. May be " +"given more than once." + +#. Short description of program. +#: src/strip.c:97 +msgid "Discard symbols from object files." +msgstr "Discard symbols from object files." + +#: src/strip.c:245 +msgid "--reloc-debug-sections used without -f" +msgstr "--reloc-debug-sections used without -f" + +#: src/strip.c:251 +msgid "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" +msgstr "" +"--reloc-debug-sections-only incompatible with -f, -g, --remove-comment and --" +"remove-section" + +#: src/strip.c:265 +msgid "Only one input file allowed together with '-o' and '-f'" +msgstr "Only one input file allowed together with ‘-o’ and ‘-f’" + +#: src/strip.c:287 +#, c-format +msgid "-f option specified twice" +msgstr "-f option specified twice" + +#: src/strip.c:296 +#, c-format +msgid "-F option specified twice" +msgstr "-F option specified twice" + +#: src/strip.c:359 +#, c-format +msgid "cannot both keep and remove .comment section" +msgstr "cannot both keep and remove .comment section" + +#: src/strip.c:478 +msgid "bad relocation" +msgstr "bad relocation" + +#: src/strip.c:756 src/strip.c:780 +#, c-format +msgid "cannot stat input file '%s'" +msgstr "cannot stat input file ‘%s’" + +#: src/strip.c:770 +#, c-format +msgid "while opening '%s'" +msgstr "while opening ‘%s’" + +#: src/strip.c:808 +#, c-format +msgid "%s: cannot use -o or -f when stripping archive" +msgstr "%s: cannot use -o or -f when stripping archive" + +#. We would like to support ar archives, but currently it just +#. doesn't work at all since we call elf_clone on the members +#. which doesn't really support ar members. +#. result = handle_ar (fd, elf, NULL, fname, +#. preserve_dates ? tv : NULL); +#. +#: src/strip.c:820 +#, c-format +msgid "%s: no support for stripping archive" +msgstr "%s: no support for stripping archive" + +#: src/strip.c:1057 +#, c-format +msgid "cannot open EBL backend" +msgstr "cannot open EBL backend" + +#: src/strip.c:1101 +msgid "cannot get number of phdrs" +msgstr "cannot get number of phdrs" + +#: src/strip.c:1115 src/strip.c:1158 +#, c-format +msgid "cannot create new ehdr for file '%s': %s" +msgstr "cannot create new ehdr for file '%s': %s" + +#: src/strip.c:1125 src/strip.c:1168 +#, c-format +msgid "cannot create new phdr for file '%s': %s" +msgstr "cannot create new phdr for file '%s': %s" + +#: src/strip.c:1248 +#, c-format +msgid "illformed file '%s'" +msgstr "illformed file ‘%s’" + +#: src/strip.c:1258 +#, c-format +msgid "Cannot remove allocated section '%s'" +msgstr "Cannot remove allocated section ‘%s’" + +#: src/strip.c:1267 +#, c-format +msgid "Cannot both keep and remove section '%s'" +msgstr "Cannot both keep and remove section ‘%s’" + +#: src/strip.c:1631 src/strip.c:1746 +#, c-format +msgid "while generating output file: %s" +msgstr "while generating output file: %s" + +#: src/strip.c:1695 +#, c-format +msgid "%s: error while updating ELF header: %s" +msgstr "%s: error while updating ELF header: %s" + +#: src/strip.c:1704 +#, c-format +msgid "%s: error while getting shdrstrndx: %s" +msgstr "%s: error while getting shdrstrndx: %s" + +#: src/strip.c:1712 src/strip.c:2552 +#, c-format +msgid "%s: error updating shdrstrndx: %s" +msgstr "%s: error updating shdrstrndx: %s" + +#: src/strip.c:1729 +#, c-format +msgid "while preparing output for '%s'" +msgstr "while preparing output for ‘%s’" + +#: src/strip.c:1790 src/strip.c:1852 +#, c-format +msgid "while create section header section: %s" +msgstr "while create section header section: %s" + +#: src/strip.c:1799 +#, c-format +msgid "cannot allocate section data: %s" +msgstr "cannot allocate section data: %s" + +#: src/strip.c:1863 +#, c-format +msgid "while create section header string table: %s" +msgstr "while create section header string table: %s" + +#: src/strip.c:1869 +msgid "no memory to create section header string table" +msgstr "no memory to create section header string table" + +#: src/strip.c:2082 +#, c-format +msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" +msgstr "Cannot remove symbol [%zd] from allocated symbol table [%zd]" + +#: src/strip.c:2469 src/strip.c:2574 +#, c-format +msgid "while writing '%s': %s" +msgstr "while writing '%s': %s" + +#: src/strip.c:2480 +#, c-format +msgid "while creating '%s'" +msgstr "while creating ‘%s’" + +#: src/strip.c:2503 +#, c-format +msgid "while computing checksum for debug information" +msgstr "while computing checksum for debug information" + +#: src/strip.c:2544 +#, c-format +msgid "%s: error while creating ELF header: %s" +msgstr "%s: error while creating ELF header: %s" + +#: src/strip.c:2560 +#, c-format +msgid "%s: error while reading the file: %s" +msgstr "%s: error while reading the file: %s" + +#: src/strip.c:2599 src/strip.c:2619 +#, c-format +msgid "while writing '%s'" +msgstr "while writing ‘%s’" + +#: src/strip.c:2656 src/strip.c:2663 +#, c-format +msgid "error while finishing '%s': %s" +msgstr "error while finishing '%s': %s" + +#: src/strip.c:2680 src/strip.c:2756 +#, c-format +msgid "cannot set access and modification date of '%s'" +msgstr "cannot set access and modification date of ‘%s’" + +#: src/unstrip.c:65 +msgid "Match MODULE against file names, not module names" +msgstr "Match MODULE against file names, not module names" + +#: src/unstrip.c:66 +msgid "Silently skip unfindable files" +msgstr "Silently skip unfindable files" + +#: src/unstrip.c:69 +msgid "Place output into FILE" +msgstr "Place output into FILE" + +#: src/unstrip.c:71 +msgid "Create multiple output files under DIRECTORY" +msgstr "Create multiple output files under DIRECTORY" + +#: src/unstrip.c:72 +msgid "Use module rather than file names" +msgstr "Use module rather than file names" + +#: src/unstrip.c:74 +msgid "Create output for modules that have no separate debug information" +msgstr "Create output for modules that have no separate debug information" + +#: src/unstrip.c:77 +msgid "Apply relocations to section contents in ET_REL files" +msgstr "Apply relocations to section contents in ET_REL files" + +#: src/unstrip.c:79 +msgid "Only list module and file names, build IDs" +msgstr "Only list module and file names, build IDs" + +#: src/unstrip.c:81 +msgid "Force combining files even if some ELF headers don't seem to match" +msgstr "Force combining files even if some ELF headers don't seem to match" + +#: src/unstrip.c:125 +#, c-format +msgid "-d option specified twice" +msgstr "-d option specified twice" + +#: src/unstrip.c:160 +#, c-format +msgid "only one of -o or -d allowed" +msgstr "only one of -o or -d allowed" + +#: src/unstrip.c:169 +#, c-format +msgid "-n cannot be used with explicit files or -o or -d" +msgstr "-n cannot be used with explicit files or -o or -d" + +#: src/unstrip.c:184 +#, c-format +msgid "output directory '%s'" +msgstr "output directory ‘%s’" + +#: src/unstrip.c:193 +#, c-format +msgid "exactly two file arguments are required" +msgstr "exactly two file arguments are required" + +#: src/unstrip.c:199 +#, c-format +msgid "-m, -a, -R, and -i options not allowed with explicit files" +msgstr "-m, -a, -R, and -i options not allowed with explicit files" + +#: src/unstrip.c:212 +#, c-format +msgid "-o or -d is required when using implicit files" +msgstr "-o or -d is required when using implicit files" + +#: src/unstrip.c:235 +#, c-format +msgid "cannot create ELF header: %s" +msgstr "cannot create ELF header: %s" + +#: src/unstrip.c:239 +#, c-format +msgid "cannot get shdrstrndx:%s" +msgstr "cannot get shdrstrndx:%s" + +#: src/unstrip.c:243 src/unstrip.c:2085 +#, c-format +msgid "cannot get ELF header: %s" +msgstr "cannot get ELF header: %s" + +#: src/unstrip.c:253 +#, c-format +msgid "cannot get new zero section: %s" +msgstr "cannot get new zero section: %s" + +#: src/unstrip.c:256 +#, c-format +msgid "cannot update new zero section: %s" +msgstr "cannot update new zero section: %s" + +#: src/unstrip.c:260 +#, c-format +msgid "cannot copy ELF header: %s" +msgstr "cannot copy ELF header: %s" + +#: src/unstrip.c:264 src/unstrip.c:2103 src/unstrip.c:2146 +#, c-format +msgid "cannot get number of program headers: %s" +msgstr "cannot get number of program headers: %s" + +#: src/unstrip.c:269 src/unstrip.c:2107 +#, c-format +msgid "cannot create program headers: %s" +msgstr "cannot create program headers: %s" + +#: src/unstrip.c:275 +#, c-format +msgid "cannot copy program header: %s" +msgstr "cannot copy program header: %s" + +#: src/unstrip.c:285 +#, c-format +msgid "cannot copy section header: %s" +msgstr "cannot copy section header: %s" + +#: src/unstrip.c:288 src/unstrip.c:1707 +#, c-format +msgid "cannot get section data: %s" +msgstr "cannot get section data: %s" + +#: src/unstrip.c:290 src/unstrip.c:1709 +#, c-format +msgid "cannot copy section data: %s" +msgstr "cannot copy section data: %s" + +#: src/unstrip.c:318 +#, c-format +msgid "cannot create directory '%s'" +msgstr "cannot create directory ‘%s’" + +#: src/unstrip.c:392 src/unstrip.c:657 src/unstrip.c:691 src/unstrip.c:859 +#: src/unstrip.c:1749 +#, c-format +msgid "cannot get symbol table entry: %s" +msgstr "cannot get symbol table entry: %s" + +#: src/unstrip.c:408 src/unstrip.c:660 src/unstrip.c:681 src/unstrip.c:694 +#: src/unstrip.c:1770 src/unstrip.c:1965 src/unstrip.c:1989 +#, c-format +msgid "cannot update symbol table: %s" +msgstr "cannot update symbol table: %s" + +#: src/unstrip.c:418 +#, c-format +msgid "cannot update section header: %s" +msgstr "cannot update section header: %s" + +#: src/unstrip.c:464 +#, c-format +msgid "gelf_getrel failed: %s" +msgstr "gelf_getrel failed: %s" + +#: src/unstrip.c:467 src/unstrip.c:482 +#, c-format +msgid "cannot update relocation: %s" +msgstr "cannot update relocation: %s" + +#: src/unstrip.c:479 +#, c-format +msgid "gelf_getrela failed: %s" +msgstr "gelf_getrela failed: %s" + +#: src/unstrip.c:580 +#, c-format +msgid "cannot get symbol version: %s" +msgstr "cannot get symbol version: %s" + +#: src/unstrip.c:593 +#, c-format +msgid "unexpected section type in [%zu] with sh_link to symtab" +msgstr "unexpected section type in [%zu] with sh_link to symtab" + +#: src/unstrip.c:848 +#, c-format +msgid "cannot get symbol section data: %s" +msgstr "cannot get symbol section data: %s" + +#: src/unstrip.c:850 +#, c-format +msgid "cannot get string section data: %s" +msgstr "cannot get string section data: %s" + +#: src/unstrip.c:867 +#, c-format +msgid "invalid string offset in symbol [%zu]" +msgstr "invalid string offset in symbol [%zu]" + +#: src/unstrip.c:1025 src/unstrip.c:1433 +#, c-format +msgid "cannot read section [%zu] name: %s" +msgstr "cannot read section [%zu] name: %s" + +#: src/unstrip.c:1040 +#, c-format +msgid "bad sh_link for group section: %s" +msgstr "bad sh_link for group section: %s" + +#: src/unstrip.c:1046 +#, c-format +msgid "couldn't get shdr for group section: %s" +msgstr "couldn't get shdr for group section: %s" + +#: src/unstrip.c:1051 +#, c-format +msgid "bad data for group symbol section: %s" +msgstr "bad data for group symbol section: %s" + +#: src/unstrip.c:1057 +#, c-format +msgid "couldn't get symbol for group section: %s" +msgstr "couldn't get symbol for group section: %s" + +#: src/unstrip.c:1062 +#, c-format +msgid "bad symbol name for group section: %s" +msgstr "bad symbol name for group section: %s" + +#: src/unstrip.c:1073 src/unstrip.c:1553 +#, c-format +msgid "cannot find matching section for [%zu] '%s'" +msgstr "cannot find matching section for [%zu] ‘%s’" + +#: src/unstrip.c:1118 src/unstrip.c:1137 src/unstrip.c:1175 +#, c-format +msgid "cannot read '.gnu.prelink_undo' section: %s" +msgstr "cannot read ‘.gnu.prelink_undo’ section: %s" + +#: src/unstrip.c:1155 +#, c-format +msgid "overflow with shnum = %zu in '%s' section" +msgstr "overflow with shnum = %zu in ‘%s’ section" + +#: src/unstrip.c:1166 +#, c-format +msgid "invalid contents in '%s' section" +msgstr "invalid contents in ‘%s’ section" + +#: src/unstrip.c:1337 src/unstrip.c:1353 src/unstrip.c:1633 src/unstrip.c:1924 +#, c-format +msgid "cannot add section name to string table: %s" +msgstr "cannot add section name to string table: %s" + +#: src/unstrip.c:1362 +#, c-format +msgid "cannot update section header string table data: %s" +msgstr "cannot update section header string table data: %s" + +#: src/unstrip.c:1391 src/unstrip.c:1395 +#, c-format +msgid "cannot get section header string table section index: %s" +msgstr "cannot get section header string table section index: %s" + +#: src/unstrip.c:1399 src/unstrip.c:1403 src/unstrip.c:1648 +#, c-format +msgid "cannot get section count: %s" +msgstr "cannot get section count: %s" + +#: src/unstrip.c:1406 +msgid "more sections in stripped file than debug file -- arguments reversed?" +msgstr "more sections in stripped file than debug file -- arguments reversed?" + +#: src/unstrip.c:1410 +msgid "no sections in stripped file" +msgstr "no sections in stripped file" + +#: src/unstrip.c:1458 src/unstrip.c:1568 +#, c-format +msgid "cannot read section header string table: %s" +msgstr "cannot read section header string table: %s" + +#: src/unstrip.c:1627 +#, c-format +msgid "cannot add new section: %s" +msgstr "cannot add new section: %s" + +#: src/unstrip.c:1757 +#, c-format +msgid "symbol [%zu] has invalid section index" +msgstr "symbol [%zu] has invalid section index" + +#: src/unstrip.c:1789 +#, c-format +msgid "group has invalid section index [%zd]" +msgstr "group has invalid section index [%zd]" + +#: src/unstrip.c:2064 +#, c-format +msgid "cannot read section data: %s" +msgstr "cannot read section data: %s" + +#: src/unstrip.c:2093 +#, c-format +msgid "cannot update ELF header: %s" +msgstr "cannot update ELF header: %s" + +#: src/unstrip.c:2117 +#, c-format +msgid "cannot update program header: %s" +msgstr "cannot update program header: %s" + +#: src/unstrip.c:2122 src/unstrip.c:2205 +#, c-format +msgid "cannot write output file: %s" +msgstr "cannot write output file: %s" + +#: src/unstrip.c:2173 +#, c-format +msgid "DWARF data not adjusted for prelinking bias; consider prelink -u" +msgstr "DWARF data not adjusted for prelinking bias; consider prelink -u" + +#: src/unstrip.c:2176 +#, c-format +msgid "" +"DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u" +msgstr "" +"DWARF data in ‘%s’ not adjusted for prelinking bias; consider prelink -u" + +#: src/unstrip.c:2196 src/unstrip.c:2248 src/unstrip.c:2260 src/unstrip.c:2350 +#, c-format +msgid "cannot create ELF descriptor: %s" +msgstr "cannot create ELF descriptor: %s" + +#: src/unstrip.c:2234 +msgid "WARNING: " +msgstr "WARNING: " + +#: src/unstrip.c:2236 +msgid ", use --force" +msgstr ", use --force" + +#: src/unstrip.c:2264 +msgid "ELF header identification (e_ident) different" +msgstr "ELF header identification (e_ident) different" + +#: src/unstrip.c:2268 +msgid "ELF header type (e_type) different" +msgstr "ELF header type (e_type) different" + +#: src/unstrip.c:2272 +msgid "ELF header machine type (e_machine) different" +msgstr "ELF header machine type (e_machine) different" + +#: src/unstrip.c:2276 +msgid "stripped program header (e_phnum) smaller than unstripped" +msgstr "stripped program header (e_phnum) smaller than unstripped" + +#: src/unstrip.c:2307 +#, c-format +msgid "cannot find stripped file for module '%s': %s" +msgstr "cannot find stripped file for module '%s': %s" + +#: src/unstrip.c:2311 +#, c-format +msgid "cannot open stripped file '%s' for module '%s': %s" +msgstr "cannot open stripped file ‘%s’ for module '%s': %s" + +#: src/unstrip.c:2326 +#, c-format +msgid "cannot find debug file for module '%s': %s" +msgstr "cannot find debug file for module '%s': %s" + +#: src/unstrip.c:2330 +#, c-format +msgid "cannot open debug file '%s' for module '%s': %s" +msgstr "cannot open debug file ‘%s’ for module '%s': %s" + +#: src/unstrip.c:2343 +#, c-format +msgid "module '%s' file '%s' is not stripped" +msgstr "module ‘%s’ file ‘%s’ is not stripped" + +#: src/unstrip.c:2374 +#, c-format +msgid "cannot cache section addresses for module '%s': %s" +msgstr "cannot cache section addresses for module '%s': %s" + +#: src/unstrip.c:2502 +msgid "no matching modules found" +msgstr "no matching modules found" + +#: src/unstrip.c:2512 +msgid "matched more than one module" +msgstr "matched more than one module" + +#: src/unstrip.c:2557 +msgid "" +"STRIPPED-FILE DEBUG-FILE\n" +"[MODULE...]" +msgstr "" +"STRIPPED-FILE DEBUG-FILE\n" +"[MODULE...]" + +#: src/unstrip.c:2558 +msgid "" +"Combine stripped files with separate symbols and debug information.\n" +"\n" +"The 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 "" +"Combine stripped files with separate symbols and debug information.\n" +"\n" +"The 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." + +#. Short description of program. +#: debuginfod/debuginfod-find.c:42 +msgid "Request debuginfo-related content from debuginfods listed in $" +msgstr "Request debuginfo-related content from debuginfods listed in $" + +#. Strings for arguments in help texts. +#: debuginfod/debuginfod-find.c:46 +msgid "" +"debuginfo BUILDID\n" +"debuginfo PATH\n" +"executable BUILDID\n" +"executable PATH\n" +"source BUILDID /FILENAME\n" +"source PATH /FILENAME\n" +"section BUILDID SECTION-NAME\n" +"section PATH SECTION-NAME\n" +msgstr "" +"debuginfo BUILDID\n" +"debuginfo PATH\n" +"executable BUILDID\n" +"executable PATH\n" +"source BUILDID /FILENAME\n" +"source PATH /FILENAME\n" +"section BUILDID SECTION-NAME\n" +"section PATH SECTION-NAME\n" + +#: tests/backtrace.c:491 +msgid "Run executable" +msgstr "Run executable" + +#: tests/dwflmodtest.c:209 +msgid "Additionally show function names" +msgstr "Additionally show function names" + +#: tests/dwflmodtest.c:210 +msgid "Show instances of inlined functions" +msgstr "Show instances of inlined functions" diff --git a/po/es.gmo b/po/es.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d22ef38733d324ffc2a148dbf8f5537b561016a9 Binary files /dev/null and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 2b20a61be1659c577392965355941761f986465c..4dbb880b84de81f064cd7ee2bf1508ed6e487ce4 100644 --- a/po/es.po +++ b/po/es.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2022-11-02 13:30+0100\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" "PO-Revision-Date: 2011-01-10 15:17-0300\n" "Last-Translator: Claudio Rodrigo Pereyra Diaz \n" @@ -52,18 +52,18 @@ msgstr "" "garantía, ni siquiera para SU COMERCIALIZACIÓN o PARA SER USADO CON UN FIN " "DETERMINADO.\n" -#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11754 +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 #: src/unstrip.c:311 #, c-format msgid "memory exhausted" msgstr "memoria agotada" -#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:51 +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 #: libelf/elf_error.c:59 msgid "no error" msgstr "ningún error" -#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:53 +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 #: libelf/elf_error.c:90 msgid "out of memory" msgstr "memoria agotada" @@ -100,7 +100,7 @@ msgstr "error durante salida de datos" msgid "no backend support available" msgstr "No hay soporte de segundo plano" -#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:52 +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 #: libelf/elf_error.c:62 msgid "unknown error" msgstr "error desconocido" @@ -117,7 +117,7 @@ msgstr "Valor de tamaño de página'%s': ignorado" msgid "invalid character '\\%o' at line %d; ignored" msgstr "Valor de tamaño de página'%s': ignorado" -#: libcpu/i386_parse.y:553 +#: libcpu/i386_parse.y:555 #, fuzzy, c-format #| msgid "while reading linker script '%s': %s at line %d" msgid "while reading i386 CPU description: %s at line %d" @@ -234,7 +234,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:73 +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 msgid "address out of range" msgstr "dirección fuera de rango" @@ -265,7 +265,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:74 +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 msgid "no matching address range" msgstr "dirección de rango no coincidente" @@ -380,170 +380,170 @@ msgstr "memoria agotada" msgid "No modules recognized in core file" msgstr "No hay módulos reconocidos en el archivo core" -#: libdwfl/libdwflP.h:54 +#: libdwfl/libdwflP.h:50 msgid "See errno" msgstr "Ve errno" -#: libdwfl/libdwflP.h:55 +#: libdwfl/libdwflP.h:51 msgid "See elf_errno" msgstr "Ver elf_errno" -#: libdwfl/libdwflP.h:56 +#: libdwfl/libdwflP.h:52 msgid "See dwarf_errno" msgstr "Ver dwarf_errno" -#: libdwfl/libdwflP.h:57 +#: libdwfl/libdwflP.h:53 msgid "See ebl_errno (XXX missing)" msgstr "Ver ebl_errno (no se encuentra XXX)" -#: libdwfl/libdwflP.h:58 +#: libdwfl/libdwflP.h:54 msgid "gzip decompression failed" msgstr "falló la descompresión gzip" -#: libdwfl/libdwflP.h:59 +#: libdwfl/libdwflP.h:55 msgid "bzip2 decompression failed" msgstr "falló la descompresión bzip2" -#: libdwfl/libdwflP.h:60 +#: libdwfl/libdwflP.h:56 msgid "LZMA decompression failed" msgstr "falló la descompresión LZMA" -#: libdwfl/libdwflP.h:61 +#: libdwfl/libdwflP.h:57 #, fuzzy msgid "zstd decompression failed" msgstr "falló la descompresión gzip" -#: libdwfl/libdwflP.h:62 +#: libdwfl/libdwflP.h:58 msgid "no support library found for machine" msgstr "no se ha encontrado una biblioteca de soporte para la máquina" -#: libdwfl/libdwflP.h:63 +#: libdwfl/libdwflP.h:59 msgid "Callbacks missing for ET_REL file" msgstr "No se encuentran rellamadas para el archivo ET_REL" -#: libdwfl/libdwflP.h:64 +#: libdwfl/libdwflP.h:60 msgid "Unsupported relocation type" msgstr "Tipo de reubicación no soportada" -#: libdwfl/libdwflP.h:65 +#: libdwfl/libdwflP.h:61 msgid "r_offset is bogus" msgstr "r_offset se encuentra inutilizable" -#: libdwfl/libdwflP.h:66 libelf/elf_error.c:114 libelf/elf_error.c:174 +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 msgid "offset out of range" msgstr "desplazamiento fuera de rango" -#: libdwfl/libdwflP.h:67 +#: libdwfl/libdwflP.h:63 msgid "relocation refers to undefined symbol" msgstr "la reubicación hace referencia a un símbolo no definido" -#: libdwfl/libdwflP.h:68 +#: libdwfl/libdwflP.h:64 msgid "Callback returned failure" msgstr "La rellamada devolvió un fallo" -#: libdwfl/libdwflP.h:69 +#: libdwfl/libdwflP.h:65 msgid "No DWARF information found" msgstr "No se ha encontrado una información DWARF" -#: libdwfl/libdwflP.h:70 +#: libdwfl/libdwflP.h:66 msgid "No symbol table found" msgstr "No se ha encontrado una tabla simbólica" -#: libdwfl/libdwflP.h:71 +#: libdwfl/libdwflP.h:67 msgid "No ELF program headers" msgstr "No existen encabezados de programa ELF" -#: libdwfl/libdwflP.h:72 +#: libdwfl/libdwflP.h:68 msgid "address range overlaps an existing module" msgstr "el rango de dirección se superpone con un módulo existente" -#: libdwfl/libdwflP.h:75 +#: libdwfl/libdwflP.h:71 msgid "image truncated" msgstr "imagen truncada" -#: libdwfl/libdwflP.h:76 +#: libdwfl/libdwflP.h:72 msgid "ELF file opened" msgstr "Archivo ELF abierto" -#: libdwfl/libdwflP.h:77 +#: libdwfl/libdwflP.h:73 msgid "not a valid ELF file" msgstr "no es un archivo ELF válido" -#: libdwfl/libdwflP.h:78 +#: libdwfl/libdwflP.h:74 msgid "cannot handle DWARF type description" msgstr "no es posible manipular tipo de descripción DWARF" -#: libdwfl/libdwflP.h:79 +#: libdwfl/libdwflP.h:75 msgid "ELF file does not match build ID" msgstr "El archivo ELF no coincide con el ID construido" -#: libdwfl/libdwflP.h:80 +#: libdwfl/libdwflP.h:76 #, fuzzy msgid "corrupt .gnu.prelink_undo section data" msgstr "no se puede leer sección '.gnu.prelink_undo': %s" -#: libdwfl/libdwflP.h:81 +#: libdwfl/libdwflP.h:77 msgid "Internal error due to ebl" msgstr "" -#: libdwfl/libdwflP.h:82 +#: libdwfl/libdwflP.h:78 msgid "Missing data in core file" msgstr "" -#: libdwfl/libdwflP.h:83 +#: libdwfl/libdwflP.h:79 #, fuzzy msgid "Invalid register" msgstr "Parámetro inválido" -#: libdwfl/libdwflP.h:84 +#: libdwfl/libdwflP.h:80 #, fuzzy #| msgid "no reference value" msgid "Unknown register value" msgstr "no hay valor de referencia" -#: libdwfl/libdwflP.h:85 +#: libdwfl/libdwflP.h:81 msgid "Error reading process memory" msgstr "" -#: libdwfl/libdwflP.h:86 +#: libdwfl/libdwflP.h:82 msgid "Couldn't find architecture of any ELF" msgstr "" -#: libdwfl/libdwflP.h:87 +#: libdwfl/libdwflP.h:83 msgid "Error parsing /proc filesystem" msgstr "" -#: libdwfl/libdwflP.h:88 +#: libdwfl/libdwflP.h:84 #, fuzzy msgid "Invalid DWARF" msgstr "DWARF inválido" -#: libdwfl/libdwflP.h:89 +#: libdwfl/libdwflP.h:85 msgid "Unsupported DWARF" msgstr "" -#: libdwfl/libdwflP.h:90 +#: libdwfl/libdwflP.h:86 msgid "Unable to find more threads" msgstr "" -#: libdwfl/libdwflP.h:91 +#: libdwfl/libdwflP.h:87 msgid "Dwfl already has attached state" msgstr "" -#: libdwfl/libdwflP.h:92 +#: libdwfl/libdwflP.h:88 msgid "Dwfl has no attached state" msgstr "" -#: libdwfl/libdwflP.h:93 +#: libdwfl/libdwflP.h:89 msgid "Unwinding not supported for this architecture" msgstr "" -#: libdwfl/libdwflP.h:94 +#: libdwfl/libdwflP.h:90 #, fuzzy msgid "Invalid argument" msgstr "Parámetro inválido" -#: libdwfl/libdwflP.h:95 +#: libdwfl/libdwflP.h:91 #, fuzzy msgid "Not an ET_CORE ELF file" msgstr "no es un archivo ELF válido" @@ -555,7 +555,7 @@ msgstr "No hay segundo plano (Backend)" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 -#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 msgid "" msgstr "" @@ -649,7 +649,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:86 src/readelf.c:6378 +#: libelf/elf_error.c:86 src/readelf.c:6758 #, c-format msgid "invalid encoding" msgstr "codificación inválida" @@ -735,8 +735,8 @@ msgstr "no coinciden los datos/scn" msgid "invalid section header" msgstr "encabezamiento de sección inválida" -#: libelf/elf_error.c:190 src/readelf.c:10266 src/readelf.c:10866 -#: src/readelf.c:10967 src/readelf.c:11149 +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 #, c-format msgid "invalid data" msgstr "datos inválidos" @@ -871,24 +871,30 @@ msgstr "" msgid "Show demangled symbols (ARG is always ignored)" msgstr "" -#: src/addr2line.c:77 +#: src/addr2line.c:76 +#, fuzzy +#| msgid "Strip debugging symbols." +msgid "Show demangled symbols" +msgstr "Descartar los símbolos de depuración." + +#: src/addr2line.c:78 msgid "Print all information on one line, and indent inlines" msgstr "" -#: src/addr2line.c:79 +#: src/addr2line.c:80 #, fuzzy #| msgid "Show absolute file names using compilation directory" msgid "Show relative file names without compilation directory" msgstr "" "Mostrar nombres de fichero absolutos mediante directorio de compilación" -#: src/addr2line.c:81 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 #: src/strings.c:77 msgid "Miscellaneous:" msgstr "Misceláneos:" #. Short description of program. -#: src/addr2line.c:89 +#: src/addr2line.c:90 msgid "" "Locate source files and line information for ADDRs (in a.out by default)." msgstr "" @@ -896,25 +902,25 @@ msgstr "" "por defecto)." #. Strings for arguments in help texts. -#: src/addr2line.c:93 +#: src/addr2line.c:94 msgid "[ADDR...]" msgstr "[DIREC...]" -#: src/addr2line.c:526 +#: src/addr2line.c:530 msgid "Section syntax requires exactly one module" msgstr "Sintaxis de sección requiere exactamente un módulo" -#: src/addr2line.c:548 +#: src/addr2line.c:552 #, c-format msgid "offset %# lies outside section '%s'" msgstr "Compensación %# se encuentra fuera de sección '%s'" -#: src/addr2line.c:658 +#: src/addr2line.c:662 #, c-format msgid "cannot find symbol '%s'" msgstr "no se puede encontrar símbolo '%s'" -#: src/addr2line.c:663 +#: src/addr2line.c:667 #, c-format msgid "offset %# lies outside contents of '%s'" msgstr "compensación %# se encuentra fuera de contenido de '%s'" @@ -1398,8 +1404,8 @@ msgid "Suppress some error output (counterpart to --verbose)" msgstr "" #. Strings for arguments in help texts. -#: src/elfclassify.c:979 src/elfcompress.c:1358 src/elflint.c:76 -#: src/readelf.c:160 +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 msgid "FILE..." msgstr "FICHERO..." @@ -1669,87 +1675,93 @@ 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:117 src/strip.c:305 src/unstrip.c:116 +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 #, c-format msgid "-o option specified twice" msgstr "opción -o especificada dos veces" -#: src/elfcompress.c:124 +#: src/elfcompress.c:135 #, fuzzy, c-format msgid "-t option specified twice" msgstr "opción -f especificada dos veces" -#: src/elfcompress.c:133 +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "" + +#: src/elfcompress.c:150 #, fuzzy, c-format msgid "unknown compression type '%s'" msgstr "tipo desconocido" #. We need at least one input file. -#: src/elfcompress.c:145 src/elfcompress.c:1369 +#: src/elfcompress.c:162 src/elfcompress.c:1447 #, fuzzy, c-format msgid "No input file given" msgstr "archivo de entrada vacío" -#: src/elfcompress.c:151 src/elfcompress.c:1373 +#: src/elfcompress.c:168 src/elfcompress.c:1451 #, fuzzy, c-format msgid "Only one input file allowed together with '-o'" msgstr "Sólo se permite ingresar un archivo junto con '-o' y '-f'" -#: src/elfcompress.c:1331 +#: src/elfcompress.c:1408 #, fuzzy msgid "Place (de)compressed output into FILE" msgstr "Colocar la salida obtenida en FICHERO" -#: src/elfcompress.c:1334 +#: src/elfcompress.c:1411 msgid "" "What type of compression to apply. TYPE can be 'none' (decompress), " -"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-" -"gnu' (.zdebug GNU style compression, 'gnu' is an alias)" +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" msgstr "" -#: src/elfcompress.c:1337 +#: src/elfcompress.c:1415 msgid "" "SECTION name to (de)compress, SECTION is an extended wildcard pattern " "(defaults to '.?(z)debug*')" msgstr "" -#: src/elfcompress.c:1340 +#: src/elfcompress.c:1418 msgid "Print a message for each section being (de)compressed" msgstr "" -#: src/elfcompress.c:1343 +#: src/elfcompress.c:1421 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:1346 src/strip.c:92 +#: src/elfcompress.c:1424 src/strip.c:92 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "Relaja algunas reglas para manejar ficheros ELF rotos" -#: src/elfcompress.c:1349 +#: src/elfcompress.c:1427 #, fuzzy msgid "Be silent when a section cannot be compressed" msgstr "" "Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n" -#: src/elfcompress.c:1359 +#: src/elfcompress.c:1437 msgid "Compress or decompress sections in an ELF file." msgstr "" -#: src/elflint.c:62 +#: src/elflint.c:63 msgid "Be extremely strict, flag level 2 features." msgstr "Sea extremadamente estricto, característica de marca de nivel 2." -#: src/elflint.c:63 +#: src/elflint.c:64 msgid "Do not print anything if successful" msgstr "No imprime nada si está correcto" -#: src/elflint.c:64 +#: src/elflint.c:65 msgid "Binary is a separate debuginfo file" msgstr "Binario es un archivo debuginfo independiente" -#: src/elflint.c:66 +#: src/elflint.c:67 msgid "" "Binary has been created with GNU ld and is therefore known to be broken in " "certain ways" @@ -1758,174 +1770,174 @@ msgstr "" "roto de alguna forma" #. Short description of program. -#: src/elflint.c:72 +#: src/elflint.c:73 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "Chequeo minucioso de ficheros ELF de acuerdo con gABI/psABI " -#: src/elflint.c:153 src/readelf.c:391 +#: src/elflint.c:154 src/readelf.c:413 #, fuzzy, c-format msgid "cannot open input file '%s'" msgstr "no se puede abrir el fichero de entrada" -#: src/elflint.c:160 +#: src/elflint.c:161 #, fuzzy, c-format msgid "cannot generate Elf descriptor for '%s': %s\n" msgstr "no se puede crear descriptor ELF: %s\n" -#: src/elflint.c:179 +#: src/elflint.c:180 #, c-format msgid "error while closing Elf descriptor: %s\n" msgstr "error al cerrar el descriptor ELF: %s\n" -#: src/elflint.c:183 +#: src/elflint.c:184 msgid "No errors" msgstr "No hay errores" -#: src/elflint.c:218 src/readelf.c:603 +#: src/elflint.c:219 src/readelf.c:625 msgid "Missing file name.\n" msgstr "Falta el nombre de archivo.\n" -#: src/elflint.c:283 +#: src/elflint.c:284 #, c-format msgid " error while freeing sub-ELF descriptor: %s\n" msgstr " error al liberar descriptor sub-ELF: %s\n" #. We cannot do anything. -#: src/elflint.c:291 +#: src/elflint.c:292 #, c-format msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "No es un fichero ELF - tiene los bytes mágicos errados en el inicio\n" -#: src/elflint.c:356 +#: src/elflint.c:358 #, c-format msgid "e_ident[%d] == %d is no known class\n" msgstr "e_ident[%d] == %d es una clase desconocida\n" -#: src/elflint.c:361 +#: src/elflint.c:363 #, c-format msgid "e_ident[%d] == %d is no known data encoding\n" msgstr "e_ident[%d] == %d es una codificación de datos desconocida\n" -#: src/elflint.c:365 +#: src/elflint.c:367 #, c-format msgid "unknown ELF header version number e_ident[%d] == %d\n" msgstr "" "número de versión de encabezamiento ELF desconocido e_ident[%d] == %d\n" -#: src/elflint.c:373 +#: src/elflint.c:375 #, c-format msgid "unsupported OS ABI e_ident[%d] == '%s'\n" msgstr "Sistema operativo OS ABI e_ident[%d] == '%s' incompatible\n" -#: src/elflint.c:379 +#: src/elflint.c:381 #, fuzzy, c-format msgid "unsupported ABI version e_ident[%d] == %d\n" msgstr "Versión incompatible ABI e_ident[%d] == %d\n" -#: src/elflint.c:384 +#: src/elflint.c:386 #, c-format msgid "e_ident[%zu] is not zero\n" msgstr "e_ident[%zu] no es cero\n" -#: src/elflint.c:389 +#: src/elflint.c:391 #, c-format msgid "unknown object file type %d\n" msgstr "tipo de fichero objeto desconocido %d\n" -#: src/elflint.c:396 +#: src/elflint.c:398 #, c-format msgid "unknown machine type %d\n" msgstr "tipo de máquina desconocido %d\n" -#: src/elflint.c:400 +#: src/elflint.c:402 #, c-format msgid "unknown object file version\n" msgstr "versión de fichero objeto desconocido\n" -#: src/elflint.c:406 +#: src/elflint.c:408 #, c-format msgid "invalid program header offset\n" msgstr "Compensación de encabezamiento de programa inválida\n" -#: src/elflint.c:408 +#: src/elflint.c:410 #, c-format msgid "executables and DSOs cannot have zero program header offset\n" msgstr "" "tanto los ejecutables como los DSO no pueden tener compensación de " "encabezamiento de programa cero\n" -#: src/elflint.c:412 +#: src/elflint.c:414 #, c-format msgid "invalid number of program header entries\n" msgstr "cantidad no válida de entradas del encabezamiento del programa\n" -#: src/elflint.c:420 +#: src/elflint.c:422 #, c-format msgid "invalid section header table offset\n" msgstr "compensación de sección de tabla de encabezamiento inválida\n" -#: src/elflint.c:423 +#: src/elflint.c:425 #, c-format msgid "section header table must be present\n" msgstr "tabla de encabezamiento de sección debe estar presente\n" -#: src/elflint.c:437 +#: src/elflint.c:439 #, c-format msgid "invalid number of section header table entries\n" msgstr "" "cantidad no válida de entradas en la tabla del encabezamiento de sección\n" -#: src/elflint.c:454 +#: src/elflint.c:456 #, c-format msgid "invalid section header index\n" msgstr "Índice de sección de encabezamiento inválido\n" -#: src/elflint.c:472 +#: src/elflint.c:474 #, c-format msgid "Can only check %u headers, shnum was %u\n" msgstr "" -#: src/elflint.c:486 +#: src/elflint.c:488 #, c-format msgid "invalid number of program header table entries\n" msgstr "cantidad no válida de entradas de tabla de encabezado del programa\n" -#: src/elflint.c:503 +#: src/elflint.c:505 #, c-format msgid "Can only check %u headers, phnum was %u\n" msgstr "" -#: src/elflint.c:508 +#: src/elflint.c:510 #, c-format msgid "invalid machine flags: %s\n" msgstr "Indicadores de máquina inválidos: %s\n" -#: src/elflint.c:515 src/elflint.c:532 +#: src/elflint.c:517 src/elflint.c:534 #, c-format msgid "invalid ELF header size: %hd\n" msgstr "tamaño inválido del encabezamiento ELF: %hd\n" -#: src/elflint.c:518 src/elflint.c:535 +#: src/elflint.c:520 src/elflint.c:537 #, c-format msgid "invalid program header size: %hd\n" msgstr "tamaño inválido del encabezamiento del programa: %hd\n" -#: src/elflint.c:521 src/elflint.c:538 +#: src/elflint.c:523 src/elflint.c:540 #, c-format msgid "invalid program header position or size\n" msgstr "tamaño o posición inválidos del encabezamiento del programa\n" -#: src/elflint.c:524 src/elflint.c:541 +#: src/elflint.c:526 src/elflint.c:543 #, c-format msgid "invalid section header size: %hd\n" msgstr "tamaño inválido del encabezamiento de sección: %hd\n" -#: src/elflint.c:527 src/elflint.c:544 +#: src/elflint.c:529 src/elflint.c:546 #, c-format msgid "invalid section header position or size\n" msgstr "tamaño o posición no válidos del encabezamiento de sección\n" -#: src/elflint.c:589 +#: src/elflint.c:591 #, c-format msgid "" "section [%2d] '%s': section with SHF_GROUP flag set not part of a section " @@ -1934,7 +1946,7 @@ msgstr "" "sección [%2d] '%s': sección con la bandera SHF_GROUP no es parte de una " "sección de grupo\n" -#: src/elflint.c:593 +#: src/elflint.c:595 #, c-format msgid "" "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" @@ -1942,14 +1954,14 @@ msgstr "" "sección [%2d] '%s': el grupo de sección [%2zu] '%s' no precede al miembro de " "grupo\n" -#: src/elflint.c:609 src/elflint.c:1497 src/elflint.c:1548 src/elflint.c:1654 -#: src/elflint.c:1990 src/elflint.c:2316 src/elflint.c:2942 src/elflint.c:3105 -#: src/elflint.c:3253 src/elflint.c:3455 src/elflint.c:4464 +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 #, 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:622 src/elflint.c:1661 +#: src/elflint.c:624 src/elflint.c:1699 #, c-format msgid "" "section [%2d] '%s': referenced as string table for section [%2d] '%s' but " @@ -1958,7 +1970,7 @@ 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:645 +#: src/elflint.c:647 #, c-format msgid "" "section [%2d] '%s': symbol table cannot have more than one extended index " @@ -1967,13 +1979,13 @@ msgstr "" "sección [%2d] '%s': la tabla de símbolo no puede tener más de una sección de " "índice extendido\n" -#: src/elflint.c:657 +#: src/elflint.c:659 #, c-format 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:661 +#: src/elflint.c:663 #, fuzzy, c-format msgid "" "section [%2u] '%s': number of local entries in 'st_info' larger than table " @@ -1982,33 +1994,33 @@ msgstr "" "Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de " "archivo\n" -#: src/elflint.c:670 +#: src/elflint.c:672 #, 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:675 src/elflint.c:678 src/elflint.c:681 src/elflint.c:684 -#: src/elflint.c:687 src/elflint.c:690 +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 #, 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:693 +#: src/elflint.c:695 #, 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:703 +#: src/elflint.c:705 #, 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:712 +#: src/elflint.c:714 #, 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:727 +#: src/elflint.c:729 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): too large section index but no extended " @@ -2017,7 +2029,7 @@ 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:733 +#: src/elflint.c:735 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " @@ -2027,27 +2039,27 @@ msgstr "" "caber en st_shndx (%)\n" #. || sym->st_shndx > SHN_HIRESERVE always false -#: src/elflint.c:745 +#: src/elflint.c:747 #, 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:753 +#: src/elflint.c:755 #, 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:759 +#: src/elflint.c:761 #, 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:764 +#: src/elflint.c:766 #, 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:772 +#: src/elflint.c:774 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " @@ -2056,26 +2068,26 @@ msgstr "" "sección [%2d] '%s': símbolo %zu: COMMON solo es permitido en archivos " "realojables\n" -#: src/elflint.c:776 +#: src/elflint.c:778 #, 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:780 +#: src/elflint.c:782 #, fuzzy, c-format msgid "" "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:831 +#: src/elflint.c:833 #, 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:837 src/elflint.c:862 src/elflint.c:911 +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " @@ -2084,7 +2096,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu no se ajusta totalmente en la sección [%2d] " "'%s'\n" -#: src/elflint.c:846 +#: src/elflint.c:848 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " @@ -2093,7 +2105,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: sección de referencia [%2d] '%s' no tiene " "establecida bandera SHF_TLS\n" -#: src/elflint.c:856 src/elflint.c:904 +#: src/elflint.c:858 src/elflint.c:906 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " @@ -2102,7 +2114,7 @@ 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:883 +#: src/elflint.c:885 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " @@ -2111,7 +2123,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de " "programa TLS\n" -#: src/elflint.c:889 +#: src/elflint.c:891 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " @@ -2120,7 +2132,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de " "programa TLS\n" -#: src/elflint.c:897 +#: src/elflint.c:899 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " @@ -2129,7 +2141,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: st_value falta sección de referencia [%2d] " "'%s'\n" -#: src/elflint.c:924 +#: src/elflint.c:926 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " @@ -2138,7 +2150,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: símbolo local fuera del rango descrito en " "sh_info\n" -#: src/elflint.c:931 +#: src/elflint.c:933 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " @@ -2147,12 +2159,12 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: símbolo non-local fuera del rango descrito " "en sh_info\n" -#: src/elflint.c:938 +#: src/elflint.c:940 #, 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:988 +#: src/elflint.c:990 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " @@ -2161,7 +2173,7 @@ msgstr "" "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección " "errada [%2d]\n" -#: src/elflint.c:995 +#: src/elflint.c:997 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " @@ -2173,7 +2185,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:1011 +#: src/elflint.c:1013 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " @@ -2182,7 +2194,7 @@ msgstr "" "Sección [%2d] '%s': valor del símbolo _GLOBAL_OFFSET_TABLE_ %# no " "coincide con dirección de sección %s %#\n" -#: src/elflint.c:1018 +#: src/elflint.c:1020 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " @@ -2191,7 +2203,7 @@ msgstr "" "Sección [%2d] '%s': tamaño de símbolo _GLOBAL_OFFSET_TABLE_ % no " "coincide con tamaño de sección %s %\n" -#: src/elflint.c:1026 +#: src/elflint.c:1028 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " @@ -2200,7 +2212,7 @@ msgstr "" "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ presente, pero no. sección " "got\n" -#: src/elflint.c:1042 +#: src/elflint.c:1044 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " @@ -2209,7 +2221,7 @@ msgstr "" "sección [%2d] '%s': Valor de símbolo _DYNAMIC_ %# no coincide con la " "dirección de segmento%#\n" -#: src/elflint.c:1049 +#: src/elflint.c:1051 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " @@ -2218,7 +2230,7 @@ msgstr "" "Sección [%2d] '%s': tamaño de símbolo _DYNAMIC % no coincide con " "tamaño de segmento %\n" -#: src/elflint.c:1062 +#: src/elflint.c:1064 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" @@ -2227,29 +2239,29 @@ msgstr "" "Sección [%2d] '%s': símbolo %zu: símbolo en tabla de símbolos dinámicos sin " "visibilidad predeterminada\n" -#: src/elflint.c:1066 +#: src/elflint.c:1068 #, 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:1104 +#: src/elflint.c:1106 #, 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:1120 +#: src/elflint.c:1122 #, 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:1131 src/elflint.c:1184 +#: src/elflint.c:1133 src/elflint.c:1186 #, 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:1156 src/elflint.c:1209 +#: src/elflint.c:1158 src/elflint.c:1211 #, c-format msgid "" "section [%2d] '%s': relative relocations after index %d as specified by " @@ -2258,7 +2270,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:1162 src/elflint.c:1215 +#: src/elflint.c:1164 src/elflint.c:1217 #, c-format msgid "" "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " @@ -2267,50 +2279,44 @@ msgstr "" "Sección [%2d] '%s': reubicación no-relativa en %zu de índice; DT_RELCOUNT " "especificado %d reubicaciones relativas\n" -#: src/elflint.c:1174 +#: src/elflint.c:1176 #, 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:1257 +#: src/elflint.c:1259 #, 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:1269 +#: src/elflint.c:1271 #, 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:1277 +#: src/elflint.c:1279 #, 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:1285 +#: src/elflint.c:1287 #, 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:1293 -#, 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:1353 +#: src/elflint.c:1365 #, 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:1380 +#: src/elflint.c:1392 #, 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:1388 +#: src/elflint.c:1400 #, c-format msgid "" "section [%2d] '%s': relocation %zu: relocation type invalid for the file " @@ -2319,12 +2325,12 @@ msgstr "" "Sección [%2d] '%s': reubicación %zu: tipo de reubicación inválido para el " "tipo de archivo\n" -#: src/elflint.c:1396 +#: src/elflint.c:1408 #, 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:1414 +#: src/elflint.c:1426 #, c-format msgid "" "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " @@ -2333,12 +2339,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:1431 +#: src/elflint.c:1443 #, 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:1446 +#: src/elflint.c:1458 #, c-format msgid "" "section [%2d] '%s': relocation %zu: copy relocation against symbol of type " @@ -2347,7 +2353,7 @@ msgstr "" "Sección [%2d] '%s': reubicación %zu: reubicación de copia con símbolo de " "tipo %s\n" -#: src/elflint.c:1467 +#: src/elflint.c:1479 #, c-format msgid "" "section [%2d] '%s': relocation %zu: read-only section modified but text " @@ -2356,24 +2362,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:1482 +#: src/elflint.c:1494 #, 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:1522 src/elflint.c:1573 +#: src/elflint.c:1534 src/elflint.c:1585 #, 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:1649 +#: src/elflint.c:1687 #, c-format msgid "more than one dynamic section present\n" msgstr "más de una sección dinámica presente\n" -#: src/elflint.c:1667 +#: src/elflint.c:1705 #, fuzzy, c-format msgid "" "section [%2d]: referenced as string table for section [%2d] '%s' but section " @@ -2382,44 +2388,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:1675 +#: src/elflint.c:1713 #, 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:1680 src/elflint.c:1969 +#: src/elflint.c:1718 src/elflint.c:2008 #, 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:1690 +#: src/elflint.c:1728 #, 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:1698 +#: src/elflint.c:1736 #, 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:1705 +#: src/elflint.c:1743 #, c-format msgid "section [%2d] '%s': entry %zu: unknown tag\n" msgstr "Sección [%2d] '%s': entrada %zu: etiqueta desconocida\n" -#: src/elflint.c:1716 +#: src/elflint.c:1754 #, 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:1726 +#: src/elflint.c:1764 #, 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:1744 +#: src/elflint.c:1782 #, c-format msgid "" "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" @@ -2427,7 +2433,7 @@ msgstr "" "Sección [%2d] '%s': entrada %zu: el valor DT_PLTREL debe ser DT_REL or " "DT_RELA\n" -#: src/elflint.c:1757 +#: src/elflint.c:1795 #, c-format msgid "" "section [%2d] '%s': entry %zu: pointer does not match address of section " @@ -2436,14 +2442,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:1800 +#: src/elflint.c:1839 #, 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:1815 +#: src/elflint.c:1854 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must be valid offset in section " @@ -2452,46 +2458,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:1835 src/elflint.c:1863 +#: src/elflint.c:1874 src/elflint.c:1902 #, 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:1847 +#: src/elflint.c:1886 #, 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:1856 +#: src/elflint.c:1895 #, 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:1871 src/elflint.c:1878 +#: src/elflint.c:1910 src/elflint.c:1917 #, 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:1888 src/elflint.c:1892 +#: src/elflint.c:1927 src/elflint.c:1931 #, 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:1898 +#: src/elflint.c:1937 #, 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:1909 src/elflint.c:1913 src/elflint.c:1917 src/elflint.c:1921 +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 #, 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:1933 +#: src/elflint.c:1972 #, c-format msgid "" "section [%2d] '%s': only relocatable files can have extended section index\n" @@ -2499,37 +2505,37 @@ msgstr "" "Sección [%2d] '%s': sólo los archivos reubicables pueden tener índice de " "sección extendido\n" -#: src/elflint.c:1943 +#: src/elflint.c:1982 #, 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:1947 +#: src/elflint.c:1986 #, 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:1952 +#: src/elflint.c:1991 #, c-format msgid "cannot get data for symbol section\n" msgstr "no se puede obtener sección para símbolos\n" -#: src/elflint.c:1955 +#: src/elflint.c:1994 #, 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:1964 +#: src/elflint.c:2003 #, 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:1979 +#: src/elflint.c:2018 #, c-format msgid "" "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " @@ -2538,24 +2544,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:1997 +#: src/elflint.c:2036 #, 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:2009 +#: src/elflint.c:2048 #, c-format msgid "cannot get data for symbol %zu\n" msgstr "no puede obtener datos para símbolo %zu\n" -#: src/elflint.c:2014 +#: src/elflint.c:2053 #, c-format msgid "extended section index is % but symbol index is not XINDEX\n" msgstr "" "índice de sección extendida es % pero índice de símbolo no es " "XINDEX\n" -#: src/elflint.c:2031 src/elflint.c:2088 +#: src/elflint.c:2070 src/elflint.c:2127 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" @@ -2563,42 +2569,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:2045 src/elflint.c:2102 +#: src/elflint.c:2084 src/elflint.c:2141 #, 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:2059 src/elflint.c:2116 +#: src/elflint.c:2098 src/elflint.c:2155 #, 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:2069 +#: src/elflint.c:2108 #, 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:2126 +#: src/elflint.c:2165 #, c-format msgid "section [%2d] '%s': hash chain reference % out of bounds\n" msgstr "" "Sección [%2d] '%s': referencia de cadena de dispersión % fuera de " "límites\n" -#: src/elflint.c:2139 +#: src/elflint.c:2178 #, 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:2151 +#: src/elflint.c:2190 #, 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:2167 +#: src/elflint.c:2206 #, fuzzy, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected at " @@ -2607,14 +2613,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:2176 +#: src/elflint.c:2215 #, 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:2210 +#: src/elflint.c:2249 #, c-format msgid "" "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" @@ -2622,7 +2628,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:2231 +#: src/elflint.c:2270 #, c-format msgid "" "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " @@ -2631,7 +2637,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:2244 +#: src/elflint.c:2283 #, c-format msgid "" "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" @@ -2639,7 +2645,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:2253 +#: src/elflint.c:2292 #, fuzzy, c-format msgid "" "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" @@ -2647,13 +2653,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:2283 +#: src/elflint.c:2322 #, 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:2288 +#: src/elflint.c:2327 #, c-format msgid "" "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" @@ -2661,43 +2667,43 @@ msgstr "" "Sección [%2d] '%s': referencia de símbolo en cadena para cubeta %zu fuera de " "límites\n" -#: src/elflint.c:2294 +#: src/elflint.c:2333 #, 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:2307 +#: src/elflint.c:2346 #, 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:2325 +#: src/elflint.c:2364 #, 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:2329 +#: src/elflint.c:2368 #, 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:2339 +#: src/elflint.c:2378 #, 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:2344 +#: src/elflint.c:2383 #, 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:2349 +#: src/elflint.c:2388 #, c-format msgid "" "section [%2d] '%s': hash table has not even room for initial administrative " @@ -2706,46 +2712,46 @@ msgstr "" "Sección [%2d] '%s': tabla de dispersión no tiene ni siquiera espacio para " "entradas administrativas iniciales\n" -#: src/elflint.c:2398 +#: src/elflint.c:2437 #, 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:2422 src/elflint.c:2487 src/elflint.c:2522 +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 #, 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:2443 +#: src/elflint.c:2482 #, 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:2454 src/elflint.c:2498 src/elflint.c:2535 +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 #, 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:2469 +#: src/elflint.c:2508 #, c-format msgid "" "hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " "%, nentries: %\n" msgstr "" -#: src/elflint.c:2556 +#: src/elflint.c:2595 #, fuzzy, c-format msgid "hash section [%2zu] '%s' invalid sh_entsize\n" msgstr "Sección [%2zu]: nombre inválido\n" -#: src/elflint.c:2566 src/elflint.c:2570 +#: src/elflint.c:2605 src/elflint.c:2609 #, 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:2577 +#: src/elflint.c:2616 #, c-format msgid "" "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash " @@ -2754,7 +2760,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:2589 +#: src/elflint.c:2628 #, c-format msgid "" "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash " @@ -2763,12 +2769,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:2605 +#: src/elflint.c:2644 #, 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:2625 +#: src/elflint.c:2664 #, c-format msgid "" "section [%2d] '%s': section groups only allowed in relocatable object files\n" @@ -2776,99 +2782,99 @@ msgstr "" "Sección [%2d] '%s': grupos de sección sólo permitidos en archivos de objeto " "reubicables\n" -#: src/elflint.c:2636 +#: src/elflint.c:2675 #, 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:2641 +#: src/elflint.c:2680 #, 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:2647 +#: src/elflint.c:2686 #, 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:2652 +#: src/elflint.c:2691 #, c-format msgid "section [%2d] '%s': sh_flags not zero\n" msgstr "Sección [%2d] '%s': sh_flags no cero\n" -#: src/elflint.c:2659 +#: src/elflint.c:2698 #, 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:2663 +#: src/elflint.c:2702 #, 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:2668 +#: src/elflint.c:2707 #, 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:2674 +#: src/elflint.c:2713 #, 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:2680 +#: src/elflint.c:2719 #, 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:2689 +#: src/elflint.c:2728 #, 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:2695 +#: src/elflint.c:2734 #, 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:2703 +#: src/elflint.c:2742 #, 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:2707 +#: src/elflint.c:2746 #, 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:2718 +#: src/elflint.c:2757 #, 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:2730 +#: src/elflint.c:2769 #, 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:2739 +#: src/elflint.c:2778 #, 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:2746 +#: src/elflint.c:2785 #, 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:2752 +#: src/elflint.c:2791 #, fuzzy, c-format msgid "" "section [%2d] '%s': element %zu references section [%2d] '%s' without " @@ -2877,12 +2883,12 @@ msgstr "" "Sección [%2d] '%s': elemento %Zu hace referencia a sección [%2d] '%s' sin " "establecer bandera SHF_GROUP\n" -#: src/elflint.c:2759 +#: src/elflint.c:2798 #, 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:2956 +#: src/elflint.c:2995 #, c-format msgid "" "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no " @@ -2891,7 +2897,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:2968 +#: src/elflint.c:3007 #, c-format msgid "" "section [%2d] '%s' has different number of entries than symbol table [%2d] " @@ -2900,29 +2906,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:2984 +#: src/elflint.c:3023 #, 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:3000 +#: src/elflint.c:3039 #, 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:3008 +#: src/elflint.c:3047 #, 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:3022 +#: src/elflint.c:3061 #, 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:3027 +#: src/elflint.c:3066 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for defined version\n" @@ -2930,7 +2936,7 @@ msgstr "" "Sección [%2d] '%s': símbolo %d: índice de versión %d es para versión " "definida\n" -#: src/elflint.c:3037 +#: src/elflint.c:3076 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for requested version\n" @@ -2938,46 +2944,46 @@ msgstr "" "Sección [%2d] '%s': símbolo %d: índice de versión %d es para la versión " "solicitada\n" -#: src/elflint.c:3090 +#: src/elflint.c:3129 #, 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:3098 src/elflint.c:3245 +#: src/elflint.c:3137 src/elflint.c:3284 #, 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:3123 src/elflint.c:3299 +#: src/elflint.c:3162 src/elflint.c:3338 #, 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:3130 src/elflint.c:3306 +#: src/elflint.c:3169 src/elflint.c:3345 #, 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:3140 +#: src/elflint.c:3179 #, 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:3148 +#: src/elflint.c:3187 #, 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:3160 +#: src/elflint.c:3199 #, 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:3168 +#: src/elflint.c:3207 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " @@ -2986,7 +2992,7 @@ msgstr "" "Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene referencia de " "nombre inválida\n" -#: src/elflint.c:3177 +#: src/elflint.c:3216 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " @@ -2995,7 +3001,7 @@ msgstr "" "Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene valor de " "dispersión: %#x, esperado %#x\n" -#: src/elflint.c:3186 +#: src/elflint.c:3225 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " @@ -3004,7 +3010,7 @@ msgstr "" "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene nombre duplicado " "'%s'\n" -#: src/elflint.c:3197 +#: src/elflint.c:3236 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" @@ -3012,14 +3018,14 @@ msgstr "" "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene próximo campo " "errado\n" -#: src/elflint.c:3214 src/elflint.c:3390 +#: src/elflint.c:3253 src/elflint.c:3429 #, 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:3222 src/elflint.c:3398 +#: src/elflint.c:3261 src/elflint.c:3437 #, fuzzy, c-format msgid "" "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " @@ -3028,46 +3034,46 @@ msgstr "" "sección [%2d] '%s': entrada %d tiene compensación inválida para próxima " "entrada\n" -#: src/elflint.c:3237 +#: src/elflint.c:3276 #, 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:3284 +#: src/elflint.c:3323 #, 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:3288 +#: src/elflint.c:3327 #, 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:3294 +#: src/elflint.c:3333 #, 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:3321 +#: src/elflint.c:3360 #, 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:3328 +#: src/elflint.c:3367 #, 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:3336 +#: src/elflint.c:3375 #, 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:3356 +#: src/elflint.c:3395 #, c-format msgid "" "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" @@ -3075,34 +3081,34 @@ msgstr "" "Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida en datos " "auxiliares\n" -#: src/elflint.c:3373 +#: src/elflint.c:3412 #, 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:3406 +#: src/elflint.c:3445 #, 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:3422 +#: src/elflint.c:3461 #, 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:3447 +#: src/elflint.c:3486 #, 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:3463 +#: src/elflint.c:3502 #, c-format msgid "section [%2d] '%s': unrecognized attribute format\n" msgstr "Sección[%2d] '%s': formato de atributo no reconocido\n" -#: src/elflint.c:3474 +#: src/elflint.c:3513 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute section\n" @@ -3110,21 +3116,21 @@ msgstr "" "Sección[%2d] '%s': compensación %zu: campo de longitud cero en sección de " "atributo\n" -#: src/elflint.c:3483 +#: src/elflint.c:3522 #, 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:3495 +#: src/elflint.c:3534 #, 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:3512 +#: src/elflint.c:3551 #, c-format msgid "" "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" @@ -3132,12 +3138,12 @@ msgstr "" "Sección [%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de sub-" "sección de atributo\n" -#: src/elflint.c:3521 +#: src/elflint.c:3560 #, 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:3530 +#: src/elflint.c:3569 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" @@ -3145,7 +3151,7 @@ msgstr "" "Sección [%2d] '%s': compensación %zu: campo de longitud cero length en sub-" "sección de atributo\n" -#: src/elflint.c:3545 +#: src/elflint.c:3584 #, c-format msgid "" "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" @@ -3154,7 +3160,7 @@ msgstr "" "atributo\n" #. Tag_File -#: src/elflint.c:3556 +#: src/elflint.c:3595 #, c-format msgid "" "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" @@ -3162,26 +3168,26 @@ msgstr "" "Sección[%2d] '%s': compensación %zu: sub-sección de atributo tiene etiqueta " "inesperada %u\n" -#: src/elflint.c:3574 +#: src/elflint.c:3616 #, 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:3585 +#: src/elflint.c:3627 #, 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:3598 +#: src/elflint.c:3640 #, 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:3602 +#: src/elflint.c:3644 #, c-format msgid "" "section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" @@ -3189,12 +3195,12 @@ msgstr "" "Sección [%2d] '%s': compensación %zu: no reconocido %s valor de atributo " "%\n" -#: src/elflint.c:3612 +#: src/elflint.c:3654 #, 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:3618 +#: src/elflint.c:3660 #, c-format msgid "" "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" @@ -3202,47 +3208,47 @@ msgstr "" "Sección [%2d] '%s': compensación %zu: extra bytes después de la última " "sección de atributo\n" -#: src/elflint.c:3715 +#: src/elflint.c:3758 #, 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:3719 +#: src/elflint.c:3762 #, c-format msgid "zeroth section has nonzero name\n" msgstr "Sección zeroth tiene nombre nonzero\n" -#: src/elflint.c:3721 +#: src/elflint.c:3764 #, c-format msgid "zeroth section has nonzero type\n" msgstr "Sección zeroth tiene tipo nonzero\n" -#: src/elflint.c:3723 +#: src/elflint.c:3766 #, c-format msgid "zeroth section has nonzero flags\n" msgstr "Sección zeroth tiene banderas nonzero\n" -#: src/elflint.c:3725 +#: src/elflint.c:3768 #, c-format msgid "zeroth section has nonzero address\n" msgstr "Sección zeroth tiene dirección nonzero\n" -#: src/elflint.c:3727 +#: src/elflint.c:3770 #, c-format msgid "zeroth section has nonzero offset\n" msgstr "Sección zeroth tiene compensación nonzero\n" -#: src/elflint.c:3729 +#: src/elflint.c:3772 #, c-format msgid "zeroth section has nonzero align value\n" msgstr "Sección zeroth tiene valor de alineación nonzero\n" -#: src/elflint.c:3731 +#: src/elflint.c:3774 #, 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:3734 +#: src/elflint.c:3777 #, c-format msgid "" "zeroth section has nonzero size value while ELF header has nonzero shnum " @@ -3251,7 +3257,7 @@ msgstr "" "Sección zeroth tiene valor de tamaño nonzero mientras que el encabezamiento " "ELF tiene valor shnum nonzero\n" -#: src/elflint.c:3738 +#: src/elflint.c:3781 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " @@ -3260,7 +3266,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:3742 +#: src/elflint.c:3785 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " @@ -3269,27 +3275,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:3760 +#: src/elflint.c:3803 #, 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:3769 +#: src/elflint.c:3812 #, c-format msgid "section [%2zu]: invalid name\n" msgstr "Sección [%2zu]: nombre inválido\n" -#: src/elflint.c:3796 +#: src/elflint.c:3839 #, 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:3813 +#: src/elflint.c:3856 #, 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:3831 +#: src/elflint.c:3874 #, c-format msgid "" "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" @@ -3297,12 +3303,12 @@ msgstr "" "Sección [%2zu] '%s' tiene banderas erradas: %s esperado y posiblemente %s, " "es %s\n" -#: src/elflint.c:3848 +#: src/elflint.c:3891 #, c-format msgid "section [%2zu] '%s' present in object file\n" msgstr "Sección [%2zu] '%s' presente en archivo objeto\n" -#: src/elflint.c:3854 src/elflint.c:3886 +#: src/elflint.c:3897 src/elflint.c:3929 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" @@ -3310,7 +3316,7 @@ msgstr "" "Sección [%2zu] '%s' tiene bandera SHF_ALLOC establecida pero no es un " "segmento cargable\n" -#: src/elflint.c:3859 src/elflint.c:3891 +#: src/elflint.c:3902 src/elflint.c:3934 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " @@ -3319,7 +3325,7 @@ msgstr "" "Sección [%2zu] '%s' no tiene bandera SHF_ALLOC establecida pero hay " "segmentos cargables\n" -#: src/elflint.c:3867 +#: src/elflint.c:3910 #, c-format msgid "" "section [%2zu] '%s' is extension section index table in non-object file\n" @@ -3327,22 +3333,22 @@ msgstr "" "Sección [%2zu] '%s' es tabla de índice de sección de extensión en archivo no-" "objeto\n" -#: src/elflint.c:3910 +#: src/elflint.c:3953 #, 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:3915 +#: src/elflint.c:3958 #, c-format msgid "cannot get section header\n" msgstr "no se puede obtener encabezamiento de sección\n" -#: src/elflint.c:3925 +#: src/elflint.c:3968 #, c-format msgid "section [%2zu] '%s' has unsupported type %d\n" msgstr "sección [%2zu] '%s' tiene tipo %d incompatible \n" -#: src/elflint.c:3945 +#: src/elflint.c:3988 #, c-format msgid "" "section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" @@ -3350,76 +3356,76 @@ msgstr "" "Sección [%2zu] '%s' contiene bandera(s) de procesador-específico inválidas " "%#\n" -#: src/elflint.c:3955 +#: src/elflint.c:3998 #, c-format msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" msgstr "Sección [%2zu] '%s' contiene bandera(s) desconocidas %#\n" -#: src/elflint.c:3963 +#: src/elflint.c:4006 #, 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:3973 +#: src/elflint.c:4016 #, 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:3978 +#: src/elflint.c:4021 #, 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:3984 +#: src/elflint.c:4027 #, 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:3990 +#: src/elflint.c:4033 #, 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:3995 +#: src/elflint.c:4038 #, 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:4002 +#: src/elflint.c:4045 #, 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:4007 +#: src/elflint.c:4050 #, 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:4026 +#: src/elflint.c:4069 #, 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:4035 +#: src/elflint.c:4078 #, 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:4042 +#: src/elflint.c:4085 #, 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:4073 +#: src/elflint.c:4116 #, c-format msgid "" "section [%2zu] '%s' not fully contained in segment of program header entry " @@ -3428,7 +3434,7 @@ msgstr "" "Sección [%2zu] '%s' no contenida totalmente en segmento de entrada de " "encabezamiento de programa %d\n" -#: src/elflint.c:4083 +#: src/elflint.c:4126 #, c-format msgid "" "section [%2zu] '%s' has type NOBITS but is read from the file in segment of " @@ -3437,7 +3443,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:4109 +#: src/elflint.c:4152 #, fuzzy, c-format msgid "" "section [%2zu] '%s' has type NOBITS but is read from the file in segment of " @@ -3446,7 +3452,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:4120 +#: src/elflint.c:4163 #, c-format msgid "" "section [%2zu] '%s' has not type NOBITS but is not read from the file in " @@ -3455,18 +3461,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:4131 +#: src/elflint.c:4174 #, 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:4141 +#: src/elflint.c:4184 #, 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:4151 +#: src/elflint.c:4194 #, c-format msgid "" "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" @@ -3474,7 +3480,7 @@ msgstr "" "Sección [%2zu] '%s': asignación de bandera establecida pero sección no en " "ningún segmento cargado\n" -#: src/elflint.c:4157 +#: src/elflint.c:4200 #, c-format msgid "" "section [%2zu] '%s': ELF header says this is the section header string table " @@ -3483,7 +3489,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:4165 +#: src/elflint.c:4208 #, c-format msgid "" "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" @@ -3491,32 +3497,32 @@ msgstr "" "sección [%2zu] '%s': ficheros reubicables no pueden tener tablas de símbolos " "dinámicos\n" -#: src/elflint.c:4216 +#: src/elflint.c:4263 #, 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:4239 +#: src/elflint.c:4286 #, 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:4250 +#: src/elflint.c:4297 #, 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:4256 +#: src/elflint.c:4303 #, 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:4267 +#: src/elflint.c:4314 #, c-format msgid "" "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " @@ -3525,26 +3531,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:4280 +#: src/elflint.c:4327 #, c-format msgid "duplicate version index %d\n" msgstr "Duplicar índice de versión %d\n" -#: src/elflint.c:4294 +#: src/elflint.c:4341 #, 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:4343 +#: src/elflint.c:4390 #, c-format msgid "phdr[%d]: unknown core file note type % at offset %\n" msgstr "" "phdr[%d]: tipo de nota de fichero core desconocido % en compensación " "%\n" -#: src/elflint.c:4347 +#: src/elflint.c:4394 #, fuzzy, c-format msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" @@ -3552,7 +3558,7 @@ msgstr "" "Sección [%2d] '%s': tipo de nota de fichero core desconocido % en " "compensación %Zu\n" -#: src/elflint.c:4403 +#: src/elflint.c:4450 #, fuzzy, c-format msgid "" "phdr[%d]: unknown object file note type % with owner name '%s' at " @@ -3561,7 +3567,7 @@ msgstr "" "phdr[%d]: tipo de nota de fichero objeto desconocido % en " "compensación %Zu\n" -#: src/elflint.c:4408 +#: src/elflint.c:4455 #, fuzzy, c-format msgid "" "section [%2d] '%s': unknown object file note type % with owner name " @@ -3570,40 +3576,40 @@ msgstr "" "Sección [%2d] '%s': tipo de nota de fichero objeto desconocido % en " "compensación %Zu\n" -#: src/elflint.c:4427 +#: src/elflint.c:4474 #, 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:4447 +#: src/elflint.c:4494 #, 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:4450 +#: src/elflint.c:4497 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "phdr[%d]: extra % bytes después de la última nota\n" -#: src/elflint.c:4471 +#: src/elflint.c:4518 #, 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:4478 +#: src/elflint.c:4525 #, 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:4481 +#: src/elflint.c:4528 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "Sección[%2d] '%s': extra % bytes después de la última nota\n" -#: src/elflint.c:4499 +#: src/elflint.c:4546 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" @@ -3611,145 +3617,145 @@ msgstr "" "Sólo ejecutables, objetos compartidos y ficheros core pueden tener " "encabezamientos de programas\n" -#: src/elflint.c:4514 +#: src/elflint.c:4561 #, 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:4524 +#: src/elflint.c:4571 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" "entrada de encabezamiento de programa %d: tipo %# de entrada de " "encabezamiento de programa desconocido\n" -#: src/elflint.c:4535 +#: src/elflint.c:4582 #, 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:4543 +#: src/elflint.c:4590 #, 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:4550 +#: src/elflint.c:4597 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "ejecutable estático no puede tener secciones dinámicas\n" -#: src/elflint.c:4564 +#: src/elflint.c:4611 #, 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:4567 +#: src/elflint.c:4614 #, 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:4577 +#: src/elflint.c:4624 #, 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:4598 +#: src/elflint.c:4645 #, 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:4609 +#: src/elflint.c:4656 #, 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:4616 +#: src/elflint.c:4663 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4625 src/elflint.c:4648 +#: src/elflint.c:4672 src/elflint.c:4695 #, 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:4654 +#: src/elflint.c:4701 #, 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:4681 +#: src/elflint.c:4728 #, 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:4684 +#: src/elflint.c:4731 #, 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:4697 +#: src/elflint.c:4744 #, 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:4705 +#: src/elflint.c:4752 #, 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:4708 +#: src/elflint.c:4755 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "sección [%2zu] '%s' debe ser asignada\n" -#: src/elflint.c:4712 +#: src/elflint.c:4759 #, 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:4715 +#: src/elflint.c:4762 #, 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:4720 +#: src/elflint.c:4767 #, 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:4723 +#: src/elflint.c:4770 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "sección [%2zu] '%s' no debe ser ejecutable\n" -#: src/elflint.c:4737 +#: src/elflint.c:4784 #, 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:4744 +#: src/elflint.c:4791 #, 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:4747 +#: src/elflint.c:4794 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " @@ -3758,7 +3764,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:4760 +#: src/elflint.c:4807 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " @@ -3767,17 +3773,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:4794 +#: src/elflint.c:4841 #, c-format msgid "cannot read ELF header: %s\n" msgstr "No se puede leer encabezamiento ELF: %s\n" -#: src/elflint.c:4806 +#: src/elflint.c:4853 #, fuzzy, c-format msgid "cannot create backend for ELF file\n" msgstr "no sepuede crear fichero nuevo" -#: src/elflint.c:4827 +#: src/elflint.c:4874 #, c-format msgid "text relocation flag set but not needed\n" msgstr "Bandera de reubicación de texto establecida pero no necesaria\n" @@ -3998,7 +4004,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: ERROR INTERNO %d (%s-%s): %s" #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 -#: src/strip.c:2766 +#: src/strip.c:2763 #, c-format msgid "while closing '%s'" msgstr "error al cerrar '%s'" @@ -4042,13 +4048,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:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663 -#: src/readelf.c:1471 src/readelf.c:1620 src/readelf.c:1847 src/readelf.c:2084 -#: src/readelf.c:2273 src/readelf.c:2451 src/readelf.c:2526 src/readelf.c:2791 -#: src/readelf.c:2866 src/readelf.c:2952 src/readelf.c:3547 src/readelf.c:3595 -#: src/readelf.c:3664 src/readelf.c:11581 src/readelf.c:12771 -#: src/readelf.c:12981 src/readelf.c:13049 src/size.c:396 src/size.c:467 -#: src/strip.c:1093 +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 #, c-format msgid "cannot get section header string table index" msgstr "no se puede obtener índice de cadena de encabezamiento de sección" @@ -4158,7 +4164,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:217 src/readelf.c:608 +#: src/objdump.c:217 src/readelf.c:630 msgid "No operation specified.\n" msgstr "No se especificó una operación.\n" @@ -4167,11 +4173,11 @@ msgstr "No se especificó una operación.\n" msgid "while close `%s'" msgstr "mientras cierra `%s'" -#: src/objdump.c:362 src/readelf.c:2179 src/readelf.c:2370 +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 msgid "INVALID SYMBOL" msgstr "SÍMBOLO INVÁLIDO" -#: src/objdump.c:377 src/readelf.c:2213 src/readelf.c:2406 +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 msgid "INVALID SECTION" msgstr "SECCIÓN INVÁLIDA" @@ -4229,90 +4235,90 @@ msgstr "%s: no es un archivo" msgid "error while freeing sub-ELF descriptor: %s" msgstr "error al liberar descriptor sub-ELF: %s" -#: src/readelf.c:96 +#: src/readelf.c:97 #, fuzzy msgid "ELF input selection:" msgstr "Selección de salida de ELF:" -#: src/readelf.c:98 +#: src/readelf.c:99 msgid "" "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" msgstr "" -#: src/readelf.c:101 +#: src/readelf.c:102 msgid "" "Used with -w to find the skeleton Compile Units in FILE associated with the " "Split Compile units in a .dwo input file" msgstr "" -#: src/readelf.c:103 +#: src/readelf.c:104 msgid "ELF output selection:" msgstr "Selección de salida de ELF:" -#: src/readelf.c:105 +#: src/readelf.c:106 msgid "All these plus -p .strtab -p .dynstr -p .comment" msgstr "Todo esto mas -p .strtab -p .dynstr -p .comment" -#: src/readelf.c:106 +#: src/readelf.c:107 msgid "Display the dynamic segment" msgstr "Mostrar el segmento dinámico" -#: src/readelf.c:107 +#: src/readelf.c:108 msgid "Display the ELF file header" msgstr "Mostrar el encabezamiento del fichero ELF" -#: src/readelf.c:109 +#: src/readelf.c:110 msgid "Display histogram of bucket list lengths" msgstr "Mostrar histograma de las longitudes de las listas de cubetas" -#: src/readelf.c:110 +#: src/readelf.c:111 msgid "Display the program headers" msgstr "Mostrar encabezamientos de programa" -#: src/readelf.c:112 +#: src/readelf.c:113 msgid "Display relocations" msgstr "Mostrar reubicaciones" -#: src/readelf.c:113 +#: src/readelf.c:114 #, fuzzy msgid "Display the section groups" msgstr "Mostrar los encabezados de las secciones" -#: src/readelf.c:114 +#: src/readelf.c:115 msgid "Display the sections' headers" msgstr "Mostrar los encabezados de las secciones" -#: src/readelf.c:117 +#: src/readelf.c:118 #, fuzzy msgid "Display the symbol table sections" msgstr "Mostrar la tabla de símbolos" -#: src/readelf.c:120 +#: src/readelf.c:121 #, fuzzy msgid "Display (only) the dynamic symbol table" msgstr "Mostrar sólo símbolos externos" -#: src/readelf.c:121 +#: src/readelf.c:122 msgid "Display versioning information" msgstr "Mostrar información de versión" -#: src/readelf.c:122 +#: src/readelf.c:123 msgid "Display the ELF notes" msgstr "Mostrar las notas ELF" -#: src/readelf.c:124 +#: src/readelf.c:125 msgid "Display architecture specific information, if any" msgstr "Mostrar información específica de la arquitectura (si es que la hay)" -#: src/readelf.c:126 +#: src/readelf.c:127 msgid "Display sections for exception handling" msgstr "Muestra secciones para manejo de excepciones" -#: src/readelf.c:128 +#: src/readelf.c:129 msgid "Additional output selection:" msgstr "Selección de salida adicional:" -#: src/readelf.c:130 +#: src/readelf.c:131 #, fuzzy msgid "" "Display DWARF section content. SECTION can be one of abbrev, addr, aranges, " @@ -4323,85 +4329,85 @@ msgstr "" "siguiente: abbrev, aranges, frame, info, loc, line, ranges, pubnames, str, " "macinfo, o exception" -#: src/readelf.c:134 +#: src/readelf.c:135 msgid "Dump the uninterpreted contents of SECTION, by number or name" msgstr "Vuelca los contenidos no interpretados de SECCIÓN, por número o nombre" -#: src/readelf.c:136 +#: src/readelf.c:137 msgid "Print string contents of sections" msgstr "Imprime contenido de cadena de secciones" -#: src/readelf.c:139 +#: src/readelf.c:140 msgid "Display the symbol index of an archive" msgstr "Muestra el índice de símbolos de un archivo" -#: src/readelf.c:141 +#: src/readelf.c:142 msgid "Use the dynamic segment when possible for displaying info" msgstr "" -#: src/readelf.c:143 +#: src/readelf.c:144 msgid "Output control:" msgstr "Control de salida:" -#: src/readelf.c:145 +#: src/readelf.c:146 msgid "Do not find symbol names for addresses in DWARF data" msgstr "" "No se encuentran los nombres de símbolos para direcciones en datos DWARF" -#: src/readelf.c:147 +#: src/readelf.c:148 #, fuzzy msgid "" "Display just offsets instead of resolving values to addresses in DWARF data" msgstr "" "No se encuentran los nombres de símbolos para direcciones en datos DWARF" -#: src/readelf.c:149 +#: src/readelf.c:150 msgid "Ignored for compatibility (lines always wide)" msgstr "" -#: src/readelf.c:151 +#: src/readelf.c:152 msgid "" "Show compression information for compressed sections (when used with -S); " "decompress section before dumping data (when used with -p or -x)" msgstr "" #. Short description of program. -#: src/readelf.c:156 +#: src/readelf.c:157 msgid "Print information from ELF file in human-readable form." msgstr "" "Imprimir información del fichero ELF en una forma comprensible para los " "seres humanos." #. Look up once. -#: src/readelf.c:373 +#: src/readelf.c:395 msgid "yes" msgstr "sí" -#: src/readelf.c:374 +#: src/readelf.c:396 msgid "no" msgstr "no" -#: src/readelf.c:576 +#: src/readelf.c:598 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "Sección de depuración DWARF desconocida `%s'.\n" -#: src/readelf.c:647 src/readelf.c:758 +#: src/readelf.c:669 src/readelf.c:780 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "no se puede crear descriptor ELF: %s" -#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188 +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 #, c-format msgid "cannot determine number of sections: %s" msgstr "no se pudieron determinar el número de secciones: %s" -#: src/readelf.c:672 src/readelf.c:1287 src/readelf.c:1495 +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 #, c-format msgid "cannot get section: %s" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:681 src/readelf.c:1294 src/readelf.c:1502 src/readelf.c:13001 +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 @@ -4410,114 +4416,120 @@ msgstr "No se puede encontrar la sección: %s" msgid "cannot get section header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" -#: src/readelf.c:689 +#: src/readelf.c:711 #, fuzzy, c-format msgid "cannot get section name" msgstr "no se puede obtener encabezamiento de sección\n" -#: src/readelf.c:698 src/readelf.c:6797 src/readelf.c:10854 src/readelf.c:10956 -#: src/readelf.c:11134 +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 #, c-format msgid "cannot get %s content: %s" msgstr "No se puede obtener el contenido %s: %s" -#: src/readelf.c:714 +#: src/readelf.c:736 #, fuzzy, c-format msgid "cannot create temp file '%s'" msgstr "no se puede crear fichero nuevo '%s': %s" -#: src/readelf.c:723 +#: src/readelf.c:745 #, fuzzy, c-format msgid "cannot write section data" msgstr "no se puede leer la sección de datos: %s" -#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775 +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "error al cerrar el descriptor ELF: %s" -#: src/readelf.c:736 +#: src/readelf.c:758 #, fuzzy, c-format msgid "error while rewinding file descriptor" msgstr "error al cerrar el descriptor ELF: %s" -#: src/readelf.c:770 +#: src/readelf.c:792 #, 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:874 +#: src/readelf.c:896 #, c-format msgid "cannot stat input file" msgstr "no sepudo stat archivo de entrada" -#: src/readelf.c:876 +#: src/readelf.c:898 #, c-format msgid "input file is empty" msgstr "archivo de entrada vacío" -#: src/readelf.c:878 +#: src/readelf.c:900 #, c-format msgid "failed reading '%s': %s" msgstr "Falló lectura de '%s': %s" -#: src/readelf.c:907 +#: src/readelf.c:929 #, 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:966 +#: src/readelf.c:988 #, c-format msgid "cannot read ELF header: %s" msgstr "no se pudo leer encabezamiento ELF: %s" -#: src/readelf.c:974 +#: src/readelf.c:996 #, c-format msgid "cannot create EBL handle" msgstr "no se puede crear EBL" -#: src/readelf.c:985 +#: src/readelf.c:1007 #, 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:1017 +#: src/readelf.c:1039 #, fuzzy, c-format msgid "cannot read ELF: %s" msgstr "no sepuede leer %s: %s" -#: src/readelf.c:1078 +#: src/readelf.c:1072 +#, fuzzy +#| msgid "cannot get section: %s" +msgid "cannot find section" +msgstr "No se puede encontrar la sección: %s" + +#: src/readelf.c:1109 msgid "NONE (None)" msgstr "NONE (Ninguno)" -#: src/readelf.c:1079 +#: src/readelf.c:1110 msgid "REL (Relocatable file)" msgstr "REL (Fichero reubicable)" -#: src/readelf.c:1080 +#: src/readelf.c:1111 msgid "EXEC (Executable file)" msgstr "EXEC (Fichero ejecutable)" -#: src/readelf.c:1081 +#: src/readelf.c:1112 msgid "DYN (Shared object file)" msgstr "DYN (Fichero objeto compartido)" -#: src/readelf.c:1082 +#: src/readelf.c:1113 msgid "CORE (Core file)" msgstr "CORE (Fichero núcleo)" -#: src/readelf.c:1087 +#: src/readelf.c:1118 #, c-format msgid "OS Specific: (%x)\n" msgstr "OS Specific: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1089 +#: src/readelf.c:1120 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Específico del procesador: (%x)\n" -#: src/readelf.c:1099 +#: src/readelf.c:1130 msgid "" "ELF Header:\n" " Magic: " @@ -4525,7 +4537,7 @@ msgstr "" "Encabezamiento ELF:\n" " Mágico: " -#: src/readelf.c:1103 +#: src/readelf.c:1134 #, c-format msgid "" "\n" @@ -4534,125 +4546,125 @@ msgstr "" "\n" " Clase: %s\n" -#: src/readelf.c:1108 +#: src/readelf.c:1139 #, c-format msgid " Data: %s\n" msgstr " Datos: %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1145 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Versión ident: %hhd %s\n" -#: src/readelf.c:1116 src/readelf.c:1138 +#: src/readelf.c:1147 src/readelf.c:1169 msgid "(current)" msgstr "(actual)" -#: src/readelf.c:1120 +#: src/readelf.c:1151 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: src/readelf.c:1123 +#: src/readelf.c:1154 #, c-format msgid " ABI Version: %hhd\n" msgstr " Versión ABI: %hhd\n" -#: src/readelf.c:1126 +#: src/readelf.c:1157 msgid " Type: " msgstr " Tipo: " -#: src/readelf.c:1131 +#: src/readelf.c:1162 #, c-format msgid " Machine: %s\n" msgstr " Máquina: %s\n" -#: src/readelf.c:1133 +#: src/readelf.c:1164 #, fuzzy, c-format msgid " Machine: : 0x%x\n" msgstr " Máquina: %s\n" -#: src/readelf.c:1136 +#: src/readelf.c:1167 #, c-format msgid " Version: %d %s\n" msgstr " Versión: %d %s\n" -#: src/readelf.c:1140 +#: src/readelf.c:1171 #, c-format msgid " Entry point address: %#\n" msgstr " Dirección de punto de entrada: %#\n" -#: src/readelf.c:1143 +#: src/readelf.c:1174 #, c-format msgid " Start of program headers: % %s\n" msgstr " Inicio de encabezamientos de programa: % %s\n" -#: src/readelf.c:1144 src/readelf.c:1147 +#: src/readelf.c:1175 src/readelf.c:1178 msgid "(bytes into file)" msgstr " (bytes en el archivo)" -#: src/readelf.c:1146 +#: src/readelf.c:1177 #, c-format msgid " Start of section headers: % %s\n" msgstr " Inicio de encabezamientos de sección: % %s\n" -#: src/readelf.c:1149 +#: src/readelf.c:1180 #, c-format msgid " Flags: %s\n" msgstr " Indicadores: %s\n" -#: src/readelf.c:1152 +#: src/readelf.c:1183 #, c-format msgid " Size of this header: % %s\n" msgstr " Tamaño de este encabezamiento: % %s\n" -#: src/readelf.c:1153 src/readelf.c:1156 src/readelf.c:1173 +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 msgid "(bytes)" msgstr "(bytes)" -#: src/readelf.c:1155 +#: src/readelf.c:1186 #, c-format msgid " Size of program header entries: % %s\n" msgstr "" " Tamaño de las entradas en encabezamiento del programa: % %s\n" -#: src/readelf.c:1158 +#: src/readelf.c:1189 #, c-format msgid " Number of program headers entries: %" msgstr " Cantidad de entradas de encabezados de programa: %" -#: src/readelf.c:1165 +#: src/readelf.c:1196 #, c-format msgid " (% in [0].sh_info)" msgstr " (% in [0].sh_info)" -#: src/readelf.c:1168 src/readelf.c:1185 src/readelf.c:1199 +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 msgid " ([0] not available)" msgstr " ([0] no disponible)" -#: src/readelf.c:1172 +#: src/readelf.c:1203 #, c-format msgid " Size of section header entries: % %s\n" msgstr "" " Tamaño de las entradas en el encabezamiento de sección: % %s\n" -#: src/readelf.c:1175 +#: src/readelf.c:1206 #, c-format msgid " Number of section headers entries: %" msgstr " Cantidad de entradas en los encabezamientos de sección: %" -#: src/readelf.c:1182 +#: src/readelf.c:1213 #, c-format msgid " (% in [0].sh_size)" msgstr " (% en [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1195 +#: src/readelf.c:1226 #, c-format msgid " (% in [0].sh_link)" msgstr " (% en [0].sh_link)" -#: src/readelf.c:1203 +#: src/readelf.c:1234 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4661,19 +4673,19 @@ msgstr "" " Índice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n" "\n" -#: src/readelf.c:1207 +#: src/readelf.c:1238 #, c-format msgid "" " Section header string table index: %\n" "\n" msgstr " Índice de tabla de cadenas de sección de encabezamiento: %\n" -#: src/readelf.c:1253 src/readelf.c:1461 +#: src/readelf.c:1288 src/readelf.c:1496 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "no se pudieron determinar el número de secciones: %s" -#: src/readelf.c:1256 +#: src/readelf.c:1291 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4682,16 +4694,16 @@ msgstr "" "Hay %d encabezamientos de sección, comenzando en compensación %#:\n" "\n" -#: src/readelf.c:1264 +#: src/readelf.c:1299 #, 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:1267 +#: src/readelf.c:1302 msgid "Section Headers:" msgstr "encabezamientos de sección:" -#: src/readelf.c:1270 +#: src/readelf.c:1305 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4699,7 +4711,7 @@ msgstr "" "[Nr] Nombre Tipo Dirección Off Tamaño Inf Al " "Enlace banderas ES" -#: src/readelf.c:1272 +#: src/readelf.c:1307 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4707,36 +4719,36 @@ msgstr "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" -#: src/readelf.c:1277 +#: src/readelf.c:1312 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1279 +#: src/readelf.c:1314 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1357 +#: src/readelf.c:1392 #, 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:1368 +#: src/readelf.c:1403 #, 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:1386 +#: src/readelf.c:1421 msgid "Program Headers:" msgstr "encabezamientos de programa:" -#: src/readelf.c:1388 +#: src/readelf.c:1423 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:1391 +#: src/readelf.c:1426 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4744,12 +4756,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:1448 +#: src/readelf.c:1483 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Solicitando intérprete de programa: %s]\n" -#: src/readelf.c:1473 +#: src/readelf.c:1508 msgid "" "\n" " Section to Segment mapping:\n" @@ -4759,12 +4771,12 @@ msgstr "" " Sección para asignación de segmento:\n" " Secciones de segmento..." -#: src/readelf.c:1484 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#: src/readelf.c:1519 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:1628 +#: src/readelf.c:1663 #, c-format msgid "" "\n" @@ -4779,7 +4791,7 @@ msgstr[1] "" "\n" "Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n" -#: src/readelf.c:1633 +#: src/readelf.c:1668 #, c-format msgid "" "\n" @@ -4794,31 +4806,32 @@ msgstr[1] "" "\n" "Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n" -#: src/readelf.c:1641 +#: src/readelf.c:1676 msgid "" msgstr "" -#: src/readelf.c:1655 +#: src/readelf.c:1690 msgid "" msgstr "" -#: src/readelf.c:1678 src/readelf.c:2461 src/readelf.c:3563 src/readelf.c:12873 -#: src/readelf.c:12880 src/readelf.c:12924 src/readelf.c:12931 +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1682 src/readelf.c:2466 src/readelf.c:3567 +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "No se puede obtener encabezamiento de sección: %s" -#: src/readelf.c:1851 src/readelf.c:2532 src/readelf.c:2797 src/readelf.c:2872 -#: src/readelf.c:3175 src/readelf.c:3249 src/readelf.c:5570 +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr ".debug_line section inválida" -#: src/readelf.c:1854 +#: src/readelf.c:1889 #, c-format msgid "" "\n" @@ -4839,7 +4852,7 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:1867 +#: src/readelf.c:1902 #, fuzzy, c-format #| msgid "" #| "\n" @@ -4868,41 +4881,41 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:1877 +#: src/readelf.c:1912 msgid " Type Value\n" msgstr " Tipo Valor\n" -#: src/readelf.c:1886 +#: src/readelf.c:1921 #, fuzzy msgid "cannot get string table by using dynamic segment" msgstr "no se pueden obtener datos de sección: %s" -#: src/readelf.c:1925 +#: src/readelf.c:1960 #, c-format msgid "Shared library: [%s]\n" msgstr "Biblioteca compartida: [%s]\n" -#: src/readelf.c:1929 +#: src/readelf.c:1964 #, c-format msgid "Library soname: [%s]\n" msgstr "Nombre-so de la biblioteca: [%s]\n" -#: src/readelf.c:1933 +#: src/readelf.c:1968 #, c-format msgid "Library rpath: [%s]\n" msgstr "Rpath de la biblioteca: [%s]\n" -#: src/readelf.c:1937 +#: src/readelf.c:1972 #, c-format msgid "Library runpath: [%s]\n" msgstr "Ruta de ejecución de la biblioteca: [%s]\n" -#: src/readelf.c:1956 +#: src/readelf.c:1993 #, c-format msgid "% (bytes)\n" msgstr "% (bytes)\n" -#: src/readelf.c:2070 src/readelf.c:2259 +#: src/readelf.c:2109 src/readelf.c:2298 #, c-format msgid "" "\n" @@ -4911,7 +4924,7 @@ msgstr "" "\n" "Tabla de símbolos inválida en compensación %#0\n" -#: src/readelf.c:2087 src/readelf.c:2276 +#: src/readelf.c:2126 src/readelf.c:2315 #, c-format msgid "" "\n" @@ -4936,7 +4949,8 @@ 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:2102 src/readelf.c:2291 +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 #, c-format msgid "" "\n" @@ -4953,29 +4967,39 @@ msgstr[1] "" "Sección de reubicación [%2u] '%s' en compensación %#0 contiene " "entradas %d:\n" -#: src/readelf.c:2112 +#: src/readelf.c:2151 msgid " Offset Type Value Name\n" msgstr " Compensación Tipo Valor Nombre\n" -#: src/readelf.c:2114 +#: src/readelf.c:2153 msgid " Offset Type Value Name\n" msgstr " Compensación Tipo Valor Nombre\n" -#: src/readelf.c:2167 src/readelf.c:2178 src/readelf.c:2191 src/readelf.c:2212 -#: src/readelf.c:2224 src/readelf.c:2357 src/readelf.c:2369 src/readelf.c:2383 -#: src/readelf.c:2405 src/readelf.c:2418 +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 msgid "" msgstr "" -#: src/readelf.c:2301 +#: src/readelf.c:2340 msgid " Offset Type Value Addend Name\n" msgstr " Compensación Tipo Valor Nombre Adend\n" -#: src/readelf.c:2303 +#: src/readelf.c:2342 msgid " Offset Type Value Addend Name\n" msgstr " Compensación Tipo Valor Nombre Adend\n" -#: src/readelf.c:2540 +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "símbolo dinámico erróneo" + +#: src/readelf.c:2868 #, c-format msgid "" "\n" @@ -4990,40 +5014,34 @@ msgstr[1] "" "\n" "La tabla de símbolos [%2u] '%s' contiene entradas %u:\n" -#: src/readelf.c:2545 +#: src/readelf.c:2873 #, 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:2553 +#: src/readelf.c:2881 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:2555 +#: src/readelf.c:2883 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:2575 -#, c-format -msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" - -#: src/readelf.c:2668 -#, c-format -msgid "bad dynamic symbol" -msgstr "símbolo dinámico erróneo" +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "" -#: src/readelf.c:2753 +#: src/readelf.c:3102 msgid "none" msgstr "nada" -#: src/readelf.c:2770 +#: src/readelf.c:3119 msgid "| " msgstr "| " -#: src/readelf.c:2800 +#: src/readelf.c:3149 #, c-format msgid "" "\n" @@ -5044,17 +5062,17 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:2821 +#: src/readelf.c:3170 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Versión: %hu Fichero: %s Conteo: %hu\n" -#: src/readelf.c:2834 +#: src/readelf.c:3183 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Nombre: %s Banderas: %s Versión: %hu\n" -#: src/readelf.c:2876 +#: src/readelf.c:3225 #, c-format msgid "" "\n" @@ -5075,19 +5093,19 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:2904 +#: src/readelf.c:3253 #, 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:2919 +#: src/readelf.c:3268 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Principal %d: %s\n" #. Print the header. -#: src/readelf.c:3179 +#: src/readelf.c:3528 #, c-format msgid "" "\n" @@ -5108,15 +5126,15 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'" -#: src/readelf.c:3207 +#: src/readelf.c:3556 msgid " 0 *local* " msgstr " 0 *local* " -#: src/readelf.c:3212 +#: src/readelf.c:3561 msgid " 1 *global* " msgstr " 1 *global* " -#: src/readelf.c:3254 +#: src/readelf.c:3603 #, c-format msgid "" "\n" @@ -5141,22 +5159,22 @@ msgstr[1] "" " Dirección: %#0* Compensación: %#08 Enlace a sección: " "[%2u] '%s'\n" -#: src/readelf.c:3276 +#: src/readelf.c:3625 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Longitud Número % of total Cobertura\n" -#: src/readelf.c:3278 +#: src/readelf.c:3627 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3285 +#: src/readelf.c:3634 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3298 +#: src/readelf.c:3647 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -5165,37 +5183,37 @@ msgstr "" " Número promedio de pruebas: búsqueda exitosa: %f\n" " búsqueda sin éxito: %f\n" -#: src/readelf.c:3316 src/readelf.c:3380 src/readelf.c:3446 +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 #, 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:3324 +#: src/readelf.c:3673 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3353 +#: src/readelf.c:3702 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3388 +#: src/readelf.c:3737 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3419 +#: src/readelf.c:3768 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3455 +#: src/readelf.c:3804 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:3521 +#: src/readelf.c:3870 #, c-format msgid "" " Symbol Bias: %u\n" @@ -5205,7 +5223,7 @@ msgstr "" " Tamaño de Bitmask: %zu bytes %%% bits establecen segundo " "cambio de dispersión: %u\n" -#: src/readelf.c:3606 +#: src/readelf.c:3955 #, c-format msgid "" "\n" @@ -5222,7 +5240,7 @@ msgstr[1] "" "Sección de lista de biblioteca [%2zu] '%s' en compensación %#0 " "contiene entradas %d:\n" -#: src/readelf.c:3620 +#: src/readelf.c:3969 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -5230,7 +5248,7 @@ msgstr "" " Biblioteca Marca de tiempo Indicadores " "de versión de suma de verificación" -#: src/readelf.c:3680 +#: src/readelf.c:4029 #, c-format msgid "" "\n" @@ -5241,102 +5259,107 @@ msgstr "" "Sección de atributos de objeto [%2zu] '%s' de % bytes con " "desplazamiento %#0:\n" -#: src/readelf.c:3697 +#: src/readelf.c:4046 msgid " Owner Size\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:3721 +#: src/readelf.c:4070 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3760 +#: src/readelf.c:4109 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3765 +#: src/readelf.c:4114 #, c-format msgid " File: %11\n" msgstr " File: %11\n" -#: src/readelf.c:3814 +#: src/readelf.c:4164 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3817 +#: src/readelf.c:4167 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3820 +#: src/readelf.c:4170 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3830 +#: src/readelf.c:4180 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3833 +#: src/readelf.c:4183 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3903 +#: src/readelf.c:4221 +#, fuzzy +msgid "Couldn't get data from section" +msgstr "No se puede obtener encabezamiento de sección 0th: %s" + +#: src/readelf.c:4286 #, fuzzy msgid "sprintf failure" msgstr "mprotect falló" -#: src/readelf.c:4387 +#: src/readelf.c:4770 msgid "empty block" msgstr "bloque vacío" -#: src/readelf.c:4390 +#: src/readelf.c:4773 #, c-format msgid "%zu byte block:" msgstr "bloque de byte %zu:" -#: src/readelf.c:4868 +#: src/readelf.c:5251 #, fuzzy, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:5028 +#: src/readelf.c:5423 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:5035 +#: src/readelf.c:5430 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# utilizado con offsetr de diferente tamaño" -#: src/readelf.c:5042 +#: src/readelf.c:5437 #, fuzzy, c-format msgid "%s %# used with different base addresses" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:5049 +#: src/readelf.c:5444 #, fuzzy, c-format msgid "%s %# used with different attribute %s and %s" msgstr "%s %# utilizado con direcciones de diferente tamaño" -#: src/readelf.c:5149 +#: src/readelf.c:5544 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:5157 +#: src/readelf.c:5552 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] ... % bytes ...\n" -#: src/readelf.c:5260 +#: src/readelf.c:5658 #, c-format msgid "" "\n" @@ -5347,7 +5370,7 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " [ Código]\n" -#: src/readelf.c:5268 +#: src/readelf.c:5666 #, c-format msgid "" "\n" @@ -5356,20 +5379,20 @@ msgstr "" "\n" "Sección de abreviatura en compensación %:\n" -#: src/readelf.c:5281 +#: src/readelf.c:5679 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** error en lectura de abreviatura: %s\n" -#: src/readelf.c:5297 +#: src/readelf.c:5695 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] compensación: %, hijos: %s, etiqueta: %s\n" -#: src/readelf.c:5330 src/readelf.c:5639 src/readelf.c:5806 src/readelf.c:6191 -#: src/readelf.c:6807 src/readelf.c:8562 src/readelf.c:9308 src/readelf.c:9791 -#: src/readelf.c:10042 src/readelf.c:10208 src/readelf.c:10595 -#: src/readelf.c:10655 +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 #, c-format msgid "" "\n" @@ -5378,52 +5401,47 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#:\n" -#: src/readelf.c:5343 -#, fuzzy, c-format -msgid "cannot get .debug_addr section data: %s" -msgstr "no se pueden obtener datos de sección: %s" - -#: src/readelf.c:5443 src/readelf.c:5467 src/readelf.c:5851 src/readelf.c:9353 +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:5445 src/readelf.c:5482 src/readelf.c:5864 src/readelf.c:9366 +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5446 src/readelf.c:5491 src/readelf.c:5873 src/readelf.c:9375 +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5448 src/readelf.c:5501 src/readelf.c:5883 src/readelf.c:9385 +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:5486 src/readelf.c:5868 src/readelf.c:9370 src/readelf.c:10787 +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 #, fuzzy, c-format msgid "Unknown version" msgstr "versión desconocida" -#: src/readelf.c:5496 src/readelf.c:5709 src/readelf.c:5878 src/readelf.c:9380 +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 #, fuzzy, c-format msgid "unsupported address size" msgstr "no hay valor de dirección" -#: src/readelf.c:5507 src/readelf.c:5720 src/readelf.c:5888 src/readelf.c:9390 +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5560 src/readelf.c:5634 +#: src/readelf.c:5952 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "no se ha podido obtener contenido de .debug_aranges: %s" -#: src/readelf.c:5575 +#: src/readelf.c:5967 #, c-format msgid "" "\n" @@ -5438,12 +5456,12 @@ msgstr[1] "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entradas %zu:\n" -#: src/readelf.c:5606 +#: src/readelf.c:5998 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5608 +#: src/readelf.c:6000 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -5451,7 +5469,7 @@ msgstr "" " Inicio [%*zu]: %0#*, longitud: %5, compensación CU DIE: " "%6\n" -#: src/readelf.c:5652 src/readelf.c:8589 +#: src/readelf.c:6038 src/readelf.c:8981 #, fuzzy, c-format msgid "" "\n" @@ -5460,150 +5478,140 @@ msgstr "" "\n" "Tabla en compensación %Zu:\n" -#: src/readelf.c:5656 src/readelf.c:5832 src/readelf.c:6831 src/readelf.c:8600 -#: src/readelf.c:9334 +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "Datos inválidos en sección [%zu] '%s'" -#: src/readelf.c:5672 +#: src/readelf.c:6058 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " (compensación: %#)" -#: src/readelf.c:5684 +#: src/readelf.c:6070 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5688 +#: src/readelf.c:6074 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5699 +#: src/readelf.c:6085 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " (compensación: %#)" -#: src/readelf.c:5705 +#: src/readelf.c:6091 #, fuzzy, c-format msgid " Address size: %6\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5716 +#: src/readelf.c:6102 #, fuzzy, c-format msgid "" " Segment size: %6\n" "\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:5771 +#: src/readelf.c:6157 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5815 -#, fuzzy, c-format -msgid "cannot get .debug_rnglists content: %s" -msgstr "no se ha podido obtener contenido de .debug_ranges: %s" - -#: src/readelf.c:5838 src/readelf.c:9340 +#: src/readelf.c:6219 src/readelf.c:9727 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:5893 src/readelf.c:9395 +#: src/readelf.c:6274 src/readelf.c:9782 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:5909 src/readelf.c:9411 +#: src/readelf.c:6290 src/readelf.c:9798 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5911 src/readelf.c:9413 +#: src/readelf.c:6292 src/readelf.c:9800 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5917 src/readelf.c:9419 +#: src/readelf.c:6298 src/readelf.c:9806 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5928 src/readelf.c:9430 +#: src/readelf.c:6309 src/readelf.c:9817 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5932 src/readelf.c:9434 +#: src/readelf.c:6313 src/readelf.c:9821 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:5984 +#: src/readelf.c:6365 #, fuzzy, c-format msgid "invalid range list data" msgstr "datos inválidos" -#: src/readelf.c:6169 src/readelf.c:9769 +#: src/readelf.c:6550 src/readelf.c:10156 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:6186 -#, c-format -msgid "cannot get .debug_ranges content: %s" -msgstr "no se ha podido obtener contenido de .debug_ranges: %s" - -#: src/readelf.c:6222 src/readelf.c:9824 +#: src/readelf.c:6598 src/readelf.c:10205 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:6224 src/readelf.c:9826 +#: src/readelf.c:6600 src/readelf.c:10207 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:6233 src/readelf.c:9852 src/readelf.c:9878 +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:6258 src/readelf.c:9962 +#: src/readelf.c:6634 src/readelf.c:10343 #, fuzzy msgid "base address" msgstr "Establecer dirección a %s\n" -#: src/readelf.c:6268 src/readelf.c:9972 +#: src/readelf.c:6644 src/readelf.c:10353 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] lista vacía\n" -#: src/readelf.c:6528 +#: src/readelf.c:6908 #, fuzzy msgid " \n" msgstr " \n" -#: src/readelf.c:6785 +#: src/readelf.c:7165 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:6803 +#: src/readelf.c:7189 #, c-format msgid "" "\n" @@ -5613,7 +5621,7 @@ msgstr "" "Sección de información de marco de llamada [%2zu] '%s' en compensación " "%#:\n" -#: src/readelf.c:6853 +#: src/readelf.c:7239 #, c-format msgid "" "\n" @@ -5622,65 +5630,65 @@ msgstr "" "\n" " [%6tx] Terminator cero\n" -#: src/readelf.c:6954 src/readelf.c:7108 +#: src/readelf.c:7343 src/readelf.c:7497 #, c-format msgid "invalid augmentation length" msgstr "longitud de aumento inválida" -#: src/readelf.c:6969 +#: src/readelf.c:7358 msgid "FDE address encoding: " msgstr "Codificación de dirección FDE:" -#: src/readelf.c:6975 +#: src/readelf.c:7364 msgid "LSDA pointer encoding: " msgstr "Codificación de puntero LSDA:" -#: src/readelf.c:7085 +#: src/readelf.c:7474 #, c-format msgid " (offset: %#)" msgstr " (compensación: %#)" -#: src/readelf.c:7092 +#: src/readelf.c:7481 #, c-format msgid " (end offset: %#)" msgstr " (fin de compensación: %#)" -#: src/readelf.c:7129 +#: src/readelf.c:7518 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr "Puntero %-26sLSDA: %#\n" -#: src/readelf.c:7214 +#: src/readelf.c:7603 #, fuzzy, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "No se puede obtener código de atributo: %s" -#: src/readelf.c:7224 +#: src/readelf.c:7613 #, fuzzy, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "No se puede obtener forma de atributo: %s" -#: src/readelf.c:7246 +#: src/readelf.c:7635 #, fuzzy, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "No se puede obtener valor: %s" -#: src/readelf.c:7576 +#: src/readelf.c:7965 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "Archivo inválido" -#: src/readelf.c:7580 +#: src/readelf.c:7969 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr " establecer archivo a %\n" -#: src/readelf.c:7584 +#: src/readelf.c:7973 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "no se puede leer encabezamiento ELF: %s" -#: src/readelf.c:7899 +#: src/readelf.c:8295 #, c-format msgid "" "\n" @@ -5691,12 +5699,12 @@ msgstr "" "Sección DWARF [%2zu] '%s' en compensación %#:\n" " [Offset]\n" -#: src/readelf.c:7949 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:7969 +#: src/readelf.c:8365 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -5709,7 +5717,7 @@ msgstr "" "Tamaño de dirección: %, Tamaño de compensación: %\n" " Tipo de firma: %#, Tipo de compensación: %#\n" -#: src/readelf.c:7981 +#: src/readelf.c:8377 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5720,39 +5728,39 @@ msgstr "" " Versión: %, Compensación de sección de abreviatura: %, " "Tamaño de dirección: %, Tamaño de compensación: %\n" -#: src/readelf.c:7991 src/readelf.c:8152 +#: src/readelf.c:8387 src/readelf.c:8548 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:8018 +#: src/readelf.c:8414 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:8047 +#: src/readelf.c:8443 #, c-format msgid "cannot get DIE offset: %s" msgstr "no se puede obtener DIE en compensación: %s" -#: src/readelf.c:8056 +#: src/readelf.c:8452 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "no se ha podido obtener etiqueta de DIE en compensación% en sección " "'%s': %s" -#: src/readelf.c:8092 +#: src/readelf.c:8488 #, c-format msgid "cannot get next DIE: %s\n" msgstr "No se puede obtener próximo DIE: %s\n" -#: src/readelf.c:8100 +#: src/readelf.c:8496 #, c-format msgid "cannot get next DIE: %s" msgstr "No se puede obtener próximo DIE: %s" -#: src/readelf.c:8144 +#: src/readelf.c:8540 #, fuzzy, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5763,7 +5771,7 @@ msgstr "" " Versión: %, Compensación de sección de abreviatura: %, " "Tamaño de dirección: %, Tamaño de compensación: %\n" -#: src/readelf.c:8196 +#: src/readelf.c:8592 #, fuzzy, c-format msgid "" "\n" @@ -5773,18 +5781,13 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %#:\n" -#: src/readelf.c:8528 +#: src/readelf.c:8924 #, fuzzy, c-format msgid "unknown form: %s" msgstr "Forma % desconocida" -#: src/readelf.c:8576 -#, 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:8680 +#: src/readelf.c:9072 #, fuzzy, c-format msgid "" "\n" @@ -5815,34 +5818,34 @@ msgstr "" "\n" "Códigos operativos:\n" -#: src/readelf.c:8702 +#: src/readelf.c:9094 #, 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:8710 +#: src/readelf.c:9102 #, fuzzy, c-format msgid "cannot handle address size: %u\n" msgstr "no hay valor de dirección" -#: src/readelf.c:8718 +#: src/readelf.c:9110 #, fuzzy, c-format msgid "cannot handle segment selector size: %u\n" msgstr "No se puede encontrar la sección: %s" -#: src/readelf.c:8728 +#: src/readelf.c:9120 #, 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:8743 +#: src/readelf.c:9135 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] " [%*] argumento %hhu \n" msgstr[1] " [%*] argumento %hhu\n" -#: src/readelf.c:8754 +#: src/readelf.c:9146 msgid "" "\n" "Directory table:" @@ -5850,12 +5853,12 @@ msgstr "" "\n" "Tabla de Directorio:" -#: src/readelf.c:8760 src/readelf.c:8837 +#: src/readelf.c:9152 src/readelf.c:9229 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8831 +#: src/readelf.c:9223 #, fuzzy msgid "" "\n" @@ -5864,7 +5867,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:8892 +#: src/readelf.c:9284 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5872,7 +5875,7 @@ msgstr "" "Tabla de nombre de archivo:\n" " Directorio de entrada Tiempo Tamaño Nombre" -#: src/readelf.c:8938 +#: src/readelf.c:9330 #, fuzzy msgid "" "\n" @@ -5881,7 +5884,7 @@ msgstr "" "\n" " Declaraciones de número de Línea:" -#: src/readelf.c:8942 +#: src/readelf.c:9334 msgid "" "\n" "Line number statements:" @@ -5889,132 +5892,132 @@ msgstr "" "\n" " Declaraciones de número de Línea:" -#: src/readelf.c:8957 +#: src/readelf.c:9349 #, 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:8991 +#: src/readelf.c:9383 #, 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:8995 +#: src/readelf.c:9387 #, 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:8998 +#: src/readelf.c:9390 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:9016 +#: src/readelf.c:9408 #, c-format msgid " extended opcode %u: " msgstr " Código operativo extendido %u: " -#: src/readelf.c:9021 +#: src/readelf.c:9413 #, fuzzy msgid " end of sequence" msgstr "Fin de secuencia" -#: src/readelf.c:9039 +#: src/readelf.c:9431 #, fuzzy, c-format msgid " set address to " msgstr "Establecer dirección a %s\n" -#: src/readelf.c:9067 +#: src/readelf.c:9459 #, fuzzy, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" "definir nuevo archivo: dir=%u, mtime=%, longitud=%, " "nombre=%s\n" -#: src/readelf.c:9081 +#: src/readelf.c:9473 #, c-format msgid " set discriminator to %u\n" msgstr " establecer discriminador a %u\n" -#: src/readelf.c:9108 +#: src/readelf.c:9500 #, c-format msgid " set inlined context %u, function name %s (0x%x)\n" msgstr "" -#: src/readelf.c:9132 +#: src/readelf.c:9524 #, fuzzy, c-format #| msgid "Also show function names" msgid " set function name %s (0x%x)\n" msgstr "También mostrar nombres de función" #. Unknown, ignore it. -#: src/readelf.c:9139 +#: src/readelf.c:9531 #, fuzzy msgid " unknown opcode" msgstr "código operativo desconocido " #. Takes no argument. -#: src/readelf.c:9151 +#: src/readelf.c:9543 msgid " copy" msgstr "Copiar" -#: src/readelf.c:9162 +#: src/readelf.c:9554 #, fuzzy, c-format msgid " advance address by %u to " msgstr "Dirección de avance por %u a %s\n" -#: src/readelf.c:9166 src/readelf.c:9227 +#: src/readelf.c:9558 src/readelf.c:9619 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:9178 +#: src/readelf.c:9570 #, c-format msgid " advance line by constant %d to %\n" msgstr " línea de avance por la constante %d a %\n" -#: src/readelf.c:9188 +#: src/readelf.c:9580 #, c-format msgid " set file to %\n" msgstr " establecer archivo a %\n" -#: src/readelf.c:9199 +#: src/readelf.c:9591 #, c-format msgid " set column to %\n" msgstr " Establecer columna a %\n" -#: src/readelf.c:9206 +#: src/readelf.c:9598 #, c-format msgid " set '%s' to %\n" msgstr "Establecer '%s' a %\n" #. Takes no argument. -#: src/readelf.c:9212 +#: src/readelf.c:9604 msgid " set basic block flag" msgstr "Establecer bandera de bloque básico" -#: src/readelf.c:9223 +#: src/readelf.c:9615 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr "Dirección de avance por constante %u a %s\n" -#: src/readelf.c:9243 +#: src/readelf.c:9635 #, 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:9253 +#: src/readelf.c:9645 msgid " set prologue end flag" msgstr " Establecer bandera prologue_end" #. Takes no argument. -#: src/readelf.c:9258 +#: src/readelf.c:9650 msgid " set epilogue begin flag" msgstr " Establecer bandera epilogue_begin" -#: src/readelf.c:9268 +#: src/readelf.c:9660 #, c-format msgid " set isa to %u\n" msgstr " establecer isa para %u\n" @@ -6022,110 +6025,95 @@ 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:9277 +#: src/readelf.c:9669 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] " opcódigo con parámetro % desconocido:" msgstr[1] " opcódigo con parámetros % desconocido:" -#: src/readelf.c:9317 -#, fuzzy, c-format -msgid "cannot get .debug_loclists content: %s" -msgstr "no es posible obtener contenido de .debug_loc: %s" - -#: src/readelf.c:9483 +#: src/readelf.c:9870 #, fuzzy, c-format msgid " \n" msgstr " \n" -#: src/readelf.c:9523 +#: src/readelf.c:9910 #, fuzzy, c-format msgid "invalid loclists data" msgstr "datos inválidos" -#: src/readelf.c:9786 -#, c-format -msgid "cannot get .debug_loc content: %s" -msgstr "no es posible obtener contenido de .debug_loc: %s" - -#: src/readelf.c:9999 src/readelf.c:11043 +#: src/readelf.c:10380 src/readelf.c:11425 msgid " \n" msgstr " \n" -#: src/readelf.c:10054 src/readelf.c:10217 -#, 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:10134 +#: src/readelf.c:10511 #, 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:10157 +#: src/readelf.c:10534 #, 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:10258 +#: src/readelf.c:10629 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " Propietario Tamaño\n" -#: src/readelf.c:10270 +#: src/readelf.c:10641 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:10276 src/readelf.c:11163 +#: src/readelf.c:10647 src/readelf.c:11546 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:10283 +#: src/readelf.c:10654 #, fuzzy, c-format msgid " Flag: 0x%" msgstr " Dirección de punto de entrada: %#\n" -#: src/readelf.c:10312 +#: src/readelf.c:10683 #, fuzzy, c-format msgid " Offset length: %\n" msgstr " (compensación: %#)" -#: src/readelf.c:10320 +#: src/readelf.c:10691 #, fuzzy, c-format msgid " .debug_line offset: 0x%\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:10345 +#: src/readelf.c:10716 #, fuzzy, c-format msgid " extension opcode table, % items:\n" msgstr " opcódigo con parámetro % desconocido:" -#: src/readelf.c:10352 +#: src/readelf.c:10723 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:10364 +#: src/readelf.c:10735 #, fuzzy, c-format msgid " % arguments:" msgstr " [%*] argumento %hhu \n" -#: src/readelf.c:10379 +#: src/readelf.c:10750 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10580 +#: src/readelf.c:10951 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" " Compensación [%5d] DIE: %6, Compensación CU DIE: %6, " "nombre: %s\n" -#: src/readelf.c:10624 +#: src/readelf.c:11006 #, c-format msgid "" "\n" @@ -6137,42 +6125,37 @@ msgstr "" " %*s String\n" #. TRANS: the debugstr| prefix makes the string unique. -#: src/readelf.c:10629 +#: src/readelf.c:11011 msgctxt "debugstr" msgid "Offset" msgstr "" -#: src/readelf.c:10639 +#: src/readelf.c:11021 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** error en lectura de cadenas: %s\n" -#: src/readelf.c:10668 -#, 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:10767 +#: src/readelf.c:11143 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:10769 +#: src/readelf.c:11145 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:10783 +#: src/readelf.c:11159 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10792 +#: src/readelf.c:11168 #, fuzzy, c-format msgid " Padding: %8\n" msgstr " (compensación: %#)" -#: src/readelf.c:10846 +#: src/readelf.c:11222 #, c-format msgid "" "\n" @@ -6181,7 +6164,7 @@ msgstr "" "\n" "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10948 +#: src/readelf.c:11324 #, c-format msgid "" "\n" @@ -6190,22 +6173,22 @@ msgstr "" "\n" "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10971 +#: src/readelf.c:11347 #, c-format msgid " LPStart encoding: %#x " msgstr "Codificación LPStart: %#x " -#: src/readelf.c:10983 +#: src/readelf.c:11359 #, c-format msgid " TType encoding: %#x " msgstr "Codificación TType: %#x " -#: src/readelf.c:10998 +#: src/readelf.c:11376 #, c-format msgid " Call site encoding: %#x " msgstr "Codificación de sitio de llamada: %#x " -#: src/readelf.c:11011 +#: src/readelf.c:11391 msgid "" "\n" " Call site table:" @@ -6213,7 +6196,7 @@ msgstr "" "\n" " Tabla de sitio de llamada:" -#: src/readelf.c:11025 +#: src/readelf.c:11407 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -6226,12 +6209,12 @@ msgstr "" " Landing pad: %#\n" " Action: %u\n" -#: src/readelf.c:11098 +#: src/readelf.c:11480 #, c-format msgid "invalid TType encoding" msgstr "Codificación TType inválida" -#: src/readelf.c:11125 +#: src/readelf.c:11507 #, fuzzy, c-format msgid "" "\n" @@ -6240,37 +6223,42 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:11154 +#: src/readelf.c:11536 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:11172 +#: src/readelf.c:11555 #, fuzzy, c-format msgid " CU offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:11179 +#: src/readelf.c:11562 #, fuzzy, c-format msgid " TU offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:11186 +#: src/readelf.c:11569 #, fuzzy, c-format msgid " address offset: %#\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:11193 +#: src/readelf.c:11576 #, fuzzy, c-format msgid " symbol offset: %#\n" msgstr " (compensación: %#)" -#: src/readelf.c:11200 +#: src/readelf.c:11586 +#, fuzzy, c-format +msgid " shortcut offset: %#\n" +msgstr " (fin de compensación: %#)" + +#: src/readelf.c:11594 #, fuzzy, c-format msgid " constant offset: %#\n" msgstr " (fin de compensación: %#)" -#: src/readelf.c:11214 +#: src/readelf.c:11608 #, fuzzy, c-format msgid "" "\n" @@ -6279,7 +6267,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:11239 +#: src/readelf.c:11633 #, fuzzy, c-format msgid "" "\n" @@ -6288,7 +6276,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:11268 +#: src/readelf.c:11662 #, fuzzy, c-format msgid "" "\n" @@ -6297,7 +6285,7 @@ msgstr "" "\n" "Sección DWARF [%2zu] '%s' en compensación %# contiene entrada %zu:\n" -#: src/readelf.c:11300 +#: src/readelf.c:11705 #, fuzzy, c-format msgid "" "\n" @@ -6306,18 +6294,37 @@ msgstr "" "\n" "Tabla de símbolos inválida en compensación %#0\n" -#: src/readelf.c:11438 +#: src/readelf.c:11790 +#, fuzzy, c-format +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +"Tabla de símbolos inválida en compensación %#0\n" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "" + +#: src/readelf.c:11886 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "no se puede depurar descriptor de contexto: %s" -#: src/readelf.c:11804 src/readelf.c:12431 src/readelf.c:12541 -#: src/readelf.c:12598 +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 #, c-format msgid "cannot convert core note data: %s" msgstr "no es posible convertir datos de la nota principal: %s" -#: src/readelf.c:12168 +#: src/readelf.c:12616 #, c-format msgid "" "\n" @@ -6326,21 +6333,21 @@ msgstr "" "\n" "%*s... ..." -#: src/readelf.c:12677 +#: src/readelf.c:13118 msgid " Owner Data size Type\n" msgstr " Owner Data size Type\n" -#: src/readelf.c:12705 +#: src/readelf.c:13146 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12757 +#: src/readelf.c:13198 #, 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:12790 +#: src/readelf.c:13231 #, c-format msgid "" "\n" @@ -6349,7 +6356,7 @@ msgstr "" "\n" "Sección de nota [%2zu] '%s' de % bytes en compensación %#0:\n" -#: src/readelf.c:12813 +#: src/readelf.c:13254 #, c-format msgid "" "\n" @@ -6358,7 +6365,7 @@ msgstr "" "\n" "Segmento de nota de % bytes en compensación %#0:\n" -#: src/readelf.c:12860 +#: src/readelf.c:13301 #, fuzzy, c-format msgid "" "\n" @@ -6367,12 +6374,12 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:12887 src/readelf.c:12938 +#: src/readelf.c:13328 src/readelf.c:13379 #, 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:12892 +#: src/readelf.c:13333 #, fuzzy, c-format msgid "" "\n" @@ -6382,7 +6389,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', % bytes en compensación " "%#0:\n" -#: src/readelf.c:12897 +#: src/readelf.c:13338 #, fuzzy, c-format msgid "" "\n" @@ -6393,7 +6400,7 @@ msgstr "" "Volcado Hex de sección [%Zu] '%s', % bytes en compensación " "%#0:\n" -#: src/readelf.c:12911 +#: src/readelf.c:13352 #, fuzzy, c-format msgid "" "\n" @@ -6402,7 +6409,7 @@ msgstr "" "\n" "Sección [%Zu] '%s' no tiene datos para volcar.\n" -#: src/readelf.c:12943 +#: src/readelf.c:13384 #, fuzzy, c-format msgid "" "\n" @@ -6412,7 +6419,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene % bytes en compensación " "%#0:\n" -#: src/readelf.c:12948 +#: src/readelf.c:13389 #, fuzzy, c-format msgid "" "\n" @@ -6423,7 +6430,7 @@ msgstr "" "Sección de cadena [%Zu] '%s' contiene % bytes en compensación " "%#0:\n" -#: src/readelf.c:12996 +#: src/readelf.c:13437 #, c-format msgid "" "\n" @@ -6432,7 +6439,7 @@ msgstr "" "\n" "sección [%lu] no existe" -#: src/readelf.c:13026 +#: src/readelf.c:13467 #, c-format msgid "" "\n" @@ -6441,12 +6448,12 @@ msgstr "" "\n" "sección '%s' no existe" -#: src/readelf.c:13081 +#: src/readelf.c:13522 #, 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:13084 +#: src/readelf.c:13525 #, c-format msgid "" "\n" @@ -6455,7 +6462,7 @@ msgstr "" "\n" "Archivo '%s' no tiene índice de símbolo\n" -#: src/readelf.c:13088 +#: src/readelf.c:13529 #, fuzzy, c-format msgid "" "\n" @@ -6464,12 +6471,12 @@ msgstr "" "\n" "Índice de archivo '%s' tiene %Zu entradas:\n" -#: src/readelf.c:13106 +#: src/readelf.c:13547 #, 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:13111 +#: src/readelf.c:13552 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Miembro de archivo contiene '%s':\n" @@ -6954,7 +6961,7 @@ msgstr "%s: error al crear encabezamiento ELF: %s" msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:1712 src/strip.c:2553 +#: src/strip.c:1712 src/strip.c:2552 #, fuzzy, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: error al crear encabezamiento ELF: %s" @@ -6989,7 +6996,7 @@ msgstr "al crear tabla de cadenas de encabezamiento de sección: %s" msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2469 src/strip.c:2577 +#: src/strip.c:2469 src/strip.c:2574 #, c-format msgid "while writing '%s': %s" msgstr "al escribir '%s': %s" @@ -7009,22 +7016,22 @@ msgstr "al computar la suma de verificación para información de depuración" msgid "%s: error while creating ELF header: %s" msgstr "%s: error al crear encabezamiento ELF: %s" -#: src/strip.c:2562 +#: src/strip.c:2560 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: error al leer el fichero: %s" -#: src/strip.c:2602 src/strip.c:2622 +#: src/strip.c:2599 src/strip.c:2619 #, c-format msgid "while writing '%s'" msgstr "al escribir '%s'" -#: src/strip.c:2659 src/strip.c:2666 +#: 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:2683 src/strip.c:2759 +#: 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'" @@ -7510,7 +7517,7 @@ msgid "" "section PATH SECTION-NAME\n" msgstr "" -#: tests/backtrace.c:483 +#: tests/backtrace.c:491 msgid "Run executable" msgstr "" @@ -7523,6 +7530,44 @@ msgstr "También mostrar nombres de función" msgid "Show instances of inlined functions" msgstr "" +#, 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" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_addr section data: %s" +#~ msgstr "no se pueden obtener datos de sección: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_rnglists content: %s" +#~ msgstr "no se ha podido obtener contenido de .debug_ranges: %s" + +#, c-format +#~ msgid "cannot get .debug_ranges content: %s" +#~ msgstr "no se ha podido obtener contenido de .debug_ranges: %s" + +#, c-format +#~ msgid "cannot get line data section data: %s" +#~ msgstr "No se puede obtener sección de datos de línea: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_loclists content: %s" +#~ msgstr "no es posible obtener contenido de .debug_loc: %s" + +#, c-format +#~ msgid "cannot get .debug_loc content: %s" +#~ msgstr "no es posible obtener contenido de .debug_loc: %s" + +#, 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" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_str_offsets section data: %s" +#~ msgstr "no se pueden obtener datos de sección: %s" + #, fuzzy, c-format #~ msgid "cannot allocate memory" #~ msgstr "No se puede asignar sección PLT: %s" @@ -7731,9 +7776,6 @@ msgstr "" #~ msgid "Strip all symbols." #~ msgstr "Descartar todos los símbolos." -#~ msgid "Strip debugging symbols." -#~ msgstr "Descartar los símbolos de depuración." - #~ msgid "Assume pagesize for the target system to be SIZE." #~ msgstr "Asumir que pagesize para el sistema de destino sea SIZE." diff --git a/po/insert-header.sin b/po/insert-header.sin new file mode 100644 index 0000000000000000000000000000000000000000..ceeebb937a6b6561520c3853ab8334f22d30221e --- /dev/null +++ b/po/insert-header.sin @@ -0,0 +1,28 @@ +# Sed script that inserts the file called HEADER before the header entry. +# +# Copyright (C) 2001 Free Software Foundation, Inc. +# Written by Bruno Haible , 2001. +# This file is free software; the Free Software Foundation gives +# unlimited permission to use, copy, distribute, and modify it. +# +# 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/ja.gmo b/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..50091b02ebc6c483dd664f4bd5c89676ebff5838 Binary files /dev/null and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 908303a9459208e44a90008f2b010cb08973625e..f16262601bafb3e461918e8c9f570d97d4cd1196 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2022-11-02 13:30+0100\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" "PO-Revision-Date: 2009-09-20 15:32+0900\n" "Last-Translator: Hyu_gabaru Ryu_ichi \n" "Language-Team: Japanese \n" @@ -42,18 +42,18 @@ msgid "" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" msgstr "" -#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11754 +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 #: src/unstrip.c:311 #, c-format msgid "memory exhausted" msgstr "メモリー枯渇" -#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:51 +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 #: libelf/elf_error.c:59 msgid "no error" msgstr "エラー無し" -#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:53 +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 #: libelf/elf_error.c:90 msgid "out of memory" msgstr "メモリー不足です" @@ -90,7 +90,7 @@ msgstr "データ出力中のエラーです" msgid "no backend support available" msgstr "バックエンドサポートを利用できません" -#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:52 +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 #: libelf/elf_error.c:62 msgid "unknown error" msgstr "不明なエラーです" @@ -105,7 +105,7 @@ msgstr "不当な文字 '%c' が %d 行目にあります; 無視しました" msgid "invalid character '\\%o' at line %d; ignored" msgstr "不当な文字 '\\%o' が %d 行目にあります; 無視しました" -#: libcpu/i386_parse.y:553 +#: libcpu/i386_parse.y:555 #, c-format msgid "while reading i386 CPU description: %s at line %d" msgstr "i386 CPU description の読み込み中: %2$d 行目の %1$s" @@ -218,7 +218,7 @@ msgstr "不当な DWARF バージョンです" msgid "invalid directory index" msgstr "不当なディレクトリー索引です" -#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73 +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 msgid "address out of range" msgstr "アドレスが範囲外です" @@ -246,7 +246,7 @@ msgstr "不当な行索引です" msgid "invalid address range index" msgstr "不当なアドレス範囲索引です" -#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74 +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 msgid "no matching address range" msgstr "一致するアドレス範囲がありません" @@ -356,165 +356,165 @@ msgstr "メモリーが十分ではありません" msgid "No modules recognized in core file" msgstr "コアファイルの中にモジュールを認識できません" -#: libdwfl/libdwflP.h:54 +#: libdwfl/libdwflP.h:50 msgid "See errno" msgstr "errno を参照してください" -#: libdwfl/libdwflP.h:55 +#: libdwfl/libdwflP.h:51 msgid "See elf_errno" msgstr "elf_errno を参照してください" -#: libdwfl/libdwflP.h:56 +#: libdwfl/libdwflP.h:52 msgid "See dwarf_errno" msgstr "dwarf_errno を参照してください" -#: libdwfl/libdwflP.h:57 +#: libdwfl/libdwflP.h:53 msgid "See ebl_errno (XXX missing)" msgstr "ebl_errno を参照してください(XXX が見つかりません)" -#: libdwfl/libdwflP.h:58 +#: libdwfl/libdwflP.h:54 msgid "gzip decompression failed" msgstr "gzip の展開に失敗しました" -#: libdwfl/libdwflP.h:59 +#: libdwfl/libdwflP.h:55 msgid "bzip2 decompression failed" msgstr "bzip2 の展開に失敗しました" -#: libdwfl/libdwflP.h:60 +#: libdwfl/libdwflP.h:56 msgid "LZMA decompression failed" msgstr "LZMA の展開に失敗しました" -#: libdwfl/libdwflP.h:61 +#: libdwfl/libdwflP.h:57 msgid "zstd decompression failed" msgstr "zstd の展開に失敗しました" -#: libdwfl/libdwflP.h:62 +#: libdwfl/libdwflP.h:58 msgid "no support library found for machine" msgstr "マシン用のサポートライブラリが見つかりません" -#: libdwfl/libdwflP.h:63 +#: libdwfl/libdwflP.h:59 msgid "Callbacks missing for ET_REL file" msgstr "ET_REL ファイル用のコールバックが見つかりません" -#: libdwfl/libdwflP.h:64 +#: libdwfl/libdwflP.h:60 msgid "Unsupported relocation type" msgstr "未対応のリロケーションタイプです" -#: libdwfl/libdwflP.h:65 +#: libdwfl/libdwflP.h:61 msgid "r_offset is bogus" msgstr "r_offset が偽物です" -#: libdwfl/libdwflP.h:66 libelf/elf_error.c:114 libelf/elf_error.c:174 +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 msgid "offset out of range" msgstr "オフセットが範囲外です" -#: libdwfl/libdwflP.h:67 +#: libdwfl/libdwflP.h:63 msgid "relocation refers to undefined symbol" msgstr "リロケーションが未定義シンボルを参照しています" -#: libdwfl/libdwflP.h:68 +#: libdwfl/libdwflP.h:64 msgid "Callback returned failure" msgstr "コールバックが失敗を返しました" -#: libdwfl/libdwflP.h:69 +#: libdwfl/libdwflP.h:65 msgid "No DWARF information found" msgstr "DWARF 情報が見つかりません" -#: libdwfl/libdwflP.h:70 +#: libdwfl/libdwflP.h:66 msgid "No symbol table found" msgstr "シンボルテーブルが見つかりません" -#: libdwfl/libdwflP.h:71 +#: libdwfl/libdwflP.h:67 msgid "No ELF program headers" msgstr "ELF プログラムヘッダーではありません" -#: libdwfl/libdwflP.h:72 +#: libdwfl/libdwflP.h:68 msgid "address range overlaps an existing module" msgstr "アドレス範囲が既存モジュールと重なります" -#: libdwfl/libdwflP.h:75 +#: libdwfl/libdwflP.h:71 msgid "image truncated" msgstr "イメージが切り詰められています" -#: libdwfl/libdwflP.h:76 +#: libdwfl/libdwflP.h:72 msgid "ELF file opened" msgstr "既に ELF ファイルを開いています" -#: libdwfl/libdwflP.h:77 +#: libdwfl/libdwflP.h:73 msgid "not a valid ELF file" msgstr "不当な ELF ファイルです" -#: libdwfl/libdwflP.h:78 +#: libdwfl/libdwflP.h:74 msgid "cannot handle DWARF type description" msgstr "DWARF type description を操作できません" -#: libdwfl/libdwflP.h:79 +#: libdwfl/libdwflP.h:75 msgid "ELF file does not match build ID" msgstr "ELF ファイルがビルド ID と一致しません" -#: libdwfl/libdwflP.h:80 +#: libdwfl/libdwflP.h:76 msgid "corrupt .gnu.prelink_undo section data" msgstr ".gnu.prelink_undo セクションデータが壊れています" -#: libdwfl/libdwflP.h:81 +#: libdwfl/libdwflP.h:77 msgid "Internal error due to ebl" msgstr "ebl に起因する内部エラー" -#: libdwfl/libdwflP.h:82 +#: libdwfl/libdwflP.h:78 msgid "Missing data in core file" msgstr "コアファイルの中にデータが見つかりません" -#: libdwfl/libdwflP.h:83 +#: libdwfl/libdwflP.h:79 msgid "Invalid register" msgstr "不当なレジスターです" -#: libdwfl/libdwflP.h:84 +#: libdwfl/libdwflP.h:80 #, fuzzy #| msgid "no reference value" msgid "Unknown register value" msgstr "参照値ではありません" -#: libdwfl/libdwflP.h:85 +#: libdwfl/libdwflP.h:81 msgid "Error reading process memory" msgstr "プロセスメモリーの読み込みエラーです" -#: libdwfl/libdwflP.h:86 +#: libdwfl/libdwflP.h:82 msgid "Couldn't find architecture of any ELF" msgstr "ELF のアーキテクチャが1つも見つかりませんでした" -#: libdwfl/libdwflP.h:87 +#: libdwfl/libdwflP.h:83 msgid "Error parsing /proc filesystem" msgstr "/proc ファイルシステムのパースエラーです" -#: libdwfl/libdwflP.h:88 +#: libdwfl/libdwflP.h:84 msgid "Invalid DWARF" msgstr "不当な DWARF です" -#: libdwfl/libdwflP.h:89 +#: libdwfl/libdwflP.h:85 msgid "Unsupported DWARF" msgstr "未対応の DWARF です" -#: libdwfl/libdwflP.h:90 +#: libdwfl/libdwflP.h:86 msgid "Unable to find more threads" msgstr "これ以上スレッドが見つかりません" -#: libdwfl/libdwflP.h:91 +#: libdwfl/libdwflP.h:87 msgid "Dwfl already has attached state" msgstr "Dwfl は既にアタッチ状態です" -#: libdwfl/libdwflP.h:92 +#: libdwfl/libdwflP.h:88 msgid "Dwfl has no attached state" msgstr "Dwfl はアタッチ状態ではありません" -#: libdwfl/libdwflP.h:93 +#: libdwfl/libdwflP.h:89 msgid "Unwinding not supported for this architecture" msgstr "このアーキテクチャに対応していない巻き戻しです" -#: libdwfl/libdwflP.h:94 +#: libdwfl/libdwflP.h:90 msgid "Invalid argument" msgstr "不当な引数です" -#: libdwfl/libdwflP.h:95 +#: libdwfl/libdwflP.h:91 msgid "Not an ET_CORE ELF file" msgstr "ET_CORE ELF ファイルではありません" @@ -525,7 +525,7 @@ msgstr "バックエンドがありません" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 -#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 msgid "" msgstr "<不明>" @@ -619,7 +619,7 @@ msgstr "ソース演算子の大きさが無効です" msgid "invalid size of destination operand" msgstr "宛先演算子の大きさが無効です" -#: libelf/elf_error.c:86 src/readelf.c:6378 +#: libelf/elf_error.c:86 src/readelf.c:6758 #, c-format msgid "invalid encoding" msgstr "無効なエンコードです" @@ -704,8 +704,8 @@ msgstr "データ/scnの不整合です" msgid "invalid section header" msgstr "不当なセクションヘッダーです" -#: libelf/elf_error.c:190 src/readelf.c:10266 src/readelf.c:10866 -#: src/readelf.c:10967 src/readelf.c:11149 +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 #, c-format msgid "invalid data" msgstr "不当なデータです" @@ -831,48 +831,54 @@ msgstr "" msgid "Show demangled symbols (ARG is always ignored)" msgstr "デマングルされた シンボルを 表示 (ARGは常に無視される)" -#: src/addr2line.c:77 +#: src/addr2line.c:76 +#, fuzzy +#| msgid "Show demangled symbols (ARG is always ignored)" +msgid "Show demangled symbols" +msgstr "デマングルされた シンボルを 表示 (ARGは常に無視される)" + +#: src/addr2line.c:78 msgid "Print all information on one line, and indent inlines" msgstr "全ての 情報を 一行で 表示し、 字下げする" -#: src/addr2line.c:79 +#: src/addr2line.c:80 #, fuzzy #| msgid "Show absolute file names using compilation directory" msgid "Show relative file names without compilation directory" msgstr "コンパイルディレクトリを 使用して 絶対ファイル名を 表示" -#: src/addr2line.c:81 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 #: src/strings.c:77 msgid "Miscellaneous:" msgstr "Misc:" #. Short description of program. -#: src/addr2line.c:89 +#: src/addr2line.c:90 msgid "" "Locate source files and line information for ADDRs (in a.out by default)." msgstr "" "ADDR のソースファイルと行の情報を 検索する (デフォルトでは a.out から)" #. Strings for arguments in help texts. -#: src/addr2line.c:93 +#: src/addr2line.c:94 msgid "[ADDR...]" msgstr "" -#: src/addr2line.c:526 +#: src/addr2line.c:530 msgid "Section syntax requires exactly one module" msgstr "" -#: src/addr2line.c:548 +#: src/addr2line.c:552 #, c-format msgid "offset %# lies outside section '%s'" msgstr "" -#: src/addr2line.c:658 +#: src/addr2line.c:662 #, c-format msgid "cannot find symbol '%s'" msgstr "シンボル '%s' が見つかりません" -#: src/addr2line.c:663 +#: src/addr2line.c:667 #, c-format msgid "offset %# lies outside contents of '%s'" msgstr "" @@ -1351,8 +1357,8 @@ msgid "Suppress some error output (counterpart to --verbose)" msgstr "いくつかのエラー出力を 抑制する ( --verbose の反対)" #. Strings for arguments in help texts. -#: src/elfclassify.c:979 src/elfcompress.c:1358 src/elflint.c:76 -#: src/readelf.c:160 +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 msgid "FILE..." msgstr "" @@ -1619,44 +1625,50 @@ msgstr "セクション %zu の内容を取得できません: %s" msgid "cannot get relocation: %s" msgstr "リロケーションを取得できません: %s" -#: src/elfcompress.c:117 src/strip.c:305 src/unstrip.c:116 +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 #, c-format msgid "-o option specified twice" msgstr "-o オプションが 2 回指定されています" -#: src/elfcompress.c:124 +#: src/elfcompress.c:135 #, c-format msgid "-t option specified twice" msgstr "-t オプションが 2 回指定されています" -#: src/elfcompress.c:133 +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "" + +#: src/elfcompress.c:150 #, c-format msgid "unknown compression type '%s'" msgstr "不明な圧縮タイプ '%s'" #. We need at least one input file. -#: src/elfcompress.c:145 src/elfcompress.c:1369 +#: src/elfcompress.c:162 src/elfcompress.c:1447 #, c-format msgid "No input file given" msgstr "入力ファイルが与えられていません" -#: src/elfcompress.c:151 src/elfcompress.c:1373 +#: src/elfcompress.c:168 src/elfcompress.c:1451 #, c-format msgid "Only one input file allowed together with '-o'" msgstr "'-o' と一緒の場合は入力ファイルは 1 つしか認められません" -#: src/elfcompress.c:1331 +#: src/elfcompress.c:1408 msgid "Place (de)compressed output into FILE" msgstr "圧縮(展開)した出力を FILE に置く" -#: src/elfcompress.c:1334 +#: src/elfcompress.c:1411 msgid "" "What type of compression to apply. TYPE can be 'none' (decompress), " -"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-" -"gnu' (.zdebug GNU style compression, 'gnu' is an alias)" +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" msgstr "" -#: src/elfcompress.c:1337 +#: src/elfcompress.c:1415 msgid "" "SECTION name to (de)compress, SECTION is an extended wildcard pattern " "(defaults to '.?(z)debug*')" @@ -1664,41 +1676,41 @@ msgstr "" "圧縮(展開)する セクション名。 SECTION は 拡張 ワイルドカード パターン(デ" "フォルトで '.?(z)debug*')" -#: src/elfcompress.c:1340 +#: src/elfcompress.c:1418 msgid "Print a message for each section being (de)compressed" msgstr "圧縮(展開) されている 各セクション に対する メッセージを 表示" -#: src/elfcompress.c:1343 +#: src/elfcompress.c:1421 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:1346 src/strip.c:92 +#: src/elfcompress.c:1424 src/strip.c:92 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "少し壊れた ELF ファイルを取り扱うためにルールを少し緩和する" -#: src/elfcompress.c:1349 +#: src/elfcompress.c:1427 msgid "Be silent when a section cannot be compressed" msgstr "セクションを圧縮できないときに静かにする" -#: src/elfcompress.c:1359 +#: src/elfcompress.c:1437 msgid "Compress or decompress sections in an ELF file." msgstr "ELF ファイルの セクションを 圧縮 または 展開する" -#: src/elflint.c:62 +#: src/elflint.c:63 msgid "Be extremely strict, flag level 2 features." msgstr "非常に厳格にする。 フラグレベル 2 機能。" -#: src/elflint.c:63 +#: src/elflint.c:64 msgid "Do not print anything if successful" msgstr "成功した場合は何も表示しない" -#: src/elflint.c:64 +#: src/elflint.c:65 msgid "Binary is a separate debuginfo file" msgstr "バイナリーは別の debuginfo ファイルです" -#: src/elflint.c:66 +#: src/elflint.c:67 msgid "" "Binary has been created with GNU ld and is therefore known to be broken in " "certain ways" @@ -1707,171 +1719,171 @@ msgstr "" "る" #. Short description of program. -#: src/elflint.c:72 +#: src/elflint.c:73 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "ELF ファイルが gABI/psABI 仕様へ準拠しているかの厳密なチェック。" -#: src/elflint.c:153 src/readelf.c:391 +#: src/elflint.c:154 src/readelf.c:413 #, c-format msgid "cannot open input file '%s'" msgstr "入力ファイル '%s' を開けません" -#: src/elflint.c:160 +#: src/elflint.c:161 #, c-format msgid "cannot generate Elf descriptor for '%s': %s\n" msgstr "'%s' に対する Elf 記述子を生成できません: %s\n" -#: src/elflint.c:179 +#: src/elflint.c:180 #, c-format msgid "error while closing Elf descriptor: %s\n" msgstr "Elf 記述子を閉じている時にエラー: %s\n" -#: src/elflint.c:183 +#: src/elflint.c:184 msgid "No errors" msgstr "エラーはありません" -#: src/elflint.c:218 src/readelf.c:603 +#: src/elflint.c:219 src/readelf.c:625 msgid "Missing file name.\n" msgstr "ファイル名がありません。\n" -#: src/elflint.c:283 +#: src/elflint.c:284 #, c-format msgid " error while freeing sub-ELF descriptor: %s\n" msgstr "sub-ELF 記述子を解放している時にエラー: %s\n" #. We cannot do anything. -#: src/elflint.c:291 +#: src/elflint.c:292 #, c-format msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "ELF ファイルではありません - 最初に誤ったマジックバイトがあります\n" -#: src/elflint.c:356 +#: src/elflint.c:358 #, c-format msgid "e_ident[%d] == %d is no known class\n" msgstr "e_ident[%d] == %d は既知のクラスではありません\n" -#: src/elflint.c:361 +#: src/elflint.c:363 #, c-format msgid "e_ident[%d] == %d is no known data encoding\n" msgstr "e_ident[%d] == %d は既知のデータエンコードではありません\n" -#: src/elflint.c:365 +#: src/elflint.c:367 #, c-format msgid "unknown ELF header version number e_ident[%d] == %d\n" msgstr "不明な ELF ヘッダーバージョン数 e_ident[%d] == %d\n" -#: src/elflint.c:373 +#: src/elflint.c:375 #, c-format msgid "unsupported OS ABI e_ident[%d] == '%s'\n" msgstr "不明な OS ABI e_ident[%d] == '%s'\n" -#: src/elflint.c:379 +#: src/elflint.c:381 #, c-format msgid "unsupported ABI version e_ident[%d] == %d\n" msgstr "不明な ABI バージョン e_ident[%d] == %d\n" -#: src/elflint.c:384 +#: src/elflint.c:386 #, c-format msgid "e_ident[%zu] is not zero\n" msgstr "e_ident[%zu] がゼロではありません\n" -#: src/elflint.c:389 +#: src/elflint.c:391 #, c-format msgid "unknown object file type %d\n" msgstr "不明なオブジェクトファイルタイプ %d\n" -#: src/elflint.c:396 +#: src/elflint.c:398 #, c-format msgid "unknown machine type %d\n" msgstr "不明なマシンタイプ %d\n" -#: src/elflint.c:400 +#: src/elflint.c:402 #, c-format msgid "unknown object file version\n" msgstr "不明なオブジェクトファイルバージョン\n" -#: src/elflint.c:406 +#: src/elflint.c:408 #, c-format msgid "invalid program header offset\n" msgstr "不当なプログラムヘッダーオフセット\n" -#: src/elflint.c:408 +#: src/elflint.c:410 #, c-format msgid "executables and DSOs cannot have zero program header offset\n" msgstr "" "実行ファイルと DSO はプログラムヘッダーオフセットが 0 であってはいけません\n" -#: src/elflint.c:412 +#: src/elflint.c:414 #, c-format msgid "invalid number of program header entries\n" msgstr "プログラムヘッダー項目数として不当な数\n" -#: src/elflint.c:420 +#: src/elflint.c:422 #, c-format msgid "invalid section header table offset\n" msgstr "不当なセクションヘッダーテーブルオフセット\n" -#: src/elflint.c:423 +#: src/elflint.c:425 #, c-format msgid "section header table must be present\n" msgstr "セクションヘッダーテーブルがなければなりません\n" -#: src/elflint.c:437 +#: src/elflint.c:439 #, c-format msgid "invalid number of section header table entries\n" msgstr "セクションヘッダーテーブル項目数として不当な数\n" -#: src/elflint.c:454 +#: src/elflint.c:456 #, c-format msgid "invalid section header index\n" msgstr "不当なセクションヘッダーインデックス\n" -#: src/elflint.c:472 +#: src/elflint.c:474 #, c-format msgid "Can only check %u headers, shnum was %u\n" msgstr "" -#: src/elflint.c:486 +#: src/elflint.c:488 #, c-format msgid "invalid number of program header table entries\n" msgstr "プログラムヘッダー項目数として不当な数\n" -#: src/elflint.c:503 +#: src/elflint.c:505 #, c-format msgid "Can only check %u headers, phnum was %u\n" msgstr "" -#: src/elflint.c:508 +#: src/elflint.c:510 #, c-format msgid "invalid machine flags: %s\n" msgstr "不当なマシンフラグ: %s\n" -#: src/elflint.c:515 src/elflint.c:532 +#: src/elflint.c:517 src/elflint.c:534 #, c-format msgid "invalid ELF header size: %hd\n" msgstr "不当な ELF ヘッダーサイズ: %hd\n" -#: src/elflint.c:518 src/elflint.c:535 +#: src/elflint.c:520 src/elflint.c:537 #, c-format msgid "invalid program header size: %hd\n" msgstr "不当なプログラムヘッダーサイズ: %hd\n" -#: src/elflint.c:521 src/elflint.c:538 +#: src/elflint.c:523 src/elflint.c:540 #, c-format msgid "invalid program header position or size\n" msgstr "不当なプログラムヘッダー位置かサイズ\n" -#: src/elflint.c:524 src/elflint.c:541 +#: src/elflint.c:526 src/elflint.c:543 #, c-format msgid "invalid section header size: %hd\n" msgstr "不当なセクションヘッダーサイズ: %hd\n" -#: src/elflint.c:527 src/elflint.c:544 +#: src/elflint.c:529 src/elflint.c:546 #, c-format msgid "invalid section header position or size\n" msgstr "不当なセクションヘッダー位置かサイズ\n" -#: src/elflint.c:589 +#: src/elflint.c:591 #, c-format msgid "" "section [%2d] '%s': section with SHF_GROUP flag set not part of a section " @@ -1880,7 +1892,7 @@ msgstr "" "セクション [%2d] '%s': SHF_GROUP フラグのあるセクションにセクショングループの" "一部分が設定されていません\n" -#: src/elflint.c:593 +#: src/elflint.c:595 #, c-format msgid "" "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" @@ -1888,14 +1900,14 @@ msgstr "" "セクション [%2d] '%s': セクショングループ [%2zu] '%s' がグループメンバーより" "前にありません\n" -#: src/elflint.c:609 src/elflint.c:1497 src/elflint.c:1548 src/elflint.c:1654 -#: src/elflint.c:1990 src/elflint.c:2316 src/elflint.c:2942 src/elflint.c:3105 -#: src/elflint.c:3253 src/elflint.c:3455 src/elflint.c:4464 +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:622 src/elflint.c:1661 +#: src/elflint.c:624 src/elflint.c:1699 #, c-format msgid "" "section [%2d] '%s': referenced as string table for section [%2d] '%s' but " @@ -1904,7 +1916,7 @@ msgstr "" "セクション [%2d] '%s': セクション [%2d] '%s' 用の文字列テーブルとして参照され" "ていますが、タイプが SHT_STRTAB ではありません\n" -#: src/elflint.c:645 +#: src/elflint.c:647 #, c-format msgid "" "section [%2d] '%s': symbol table cannot have more than one extended index " @@ -1913,45 +1925,45 @@ msgstr "" "セクション [%2d] '%s': シンボルテーブルは 1 個を越える拡張インデックスセク" "ションを持てません\n" -#: src/elflint.c:657 +#: src/elflint.c:659 #, c-format msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" msgstr "セクション [%2u] '%s': 項目サイズが ElfXX_Sym と一致しません\n" -#: src/elflint.c:661 +#: src/elflint.c:663 #, c-format msgid "" "section [%2u] '%s': number of local entries in 'st_info' larger than table " "size\n" msgstr "" -#: src/elflint.c:670 +#: src/elflint.c:672 #, c-format msgid "section [%2d] '%s': cannot get symbol %d: %s\n" msgstr "セクション [%2d] '%s': シンボル %d を得られません: %s\n" -#: src/elflint.c:675 src/elflint.c:678 src/elflint.c:681 src/elflint.c:684 -#: src/elflint.c:687 src/elflint.c:690 +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 #, c-format msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" msgstr "セクション [%2d] '%s': 0番目の項目にある '%s' ゼロではありません\n" -#: src/elflint.c:693 +#: src/elflint.c:695 #, c-format msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" msgstr "セクション [%2d] '%s': 0番目の項目用の XINDEX がゼロではありません\n" -#: src/elflint.c:703 +#: src/elflint.c:705 #, c-format msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" msgstr "セクション [%2d] '%s': シンボル %zu を得られません: %s\n" -#: src/elflint.c:712 +#: src/elflint.c:714 #, c-format msgid "section [%2d] '%s': symbol %zu: invalid name value\n" msgstr "セクション [%2d] '%s': シンボル %zu: 不当な名前の値\n" -#: src/elflint.c:727 +#: src/elflint.c:729 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): too large section index but no extended " @@ -1960,7 +1972,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: 大きすぎるセクションインデックスだが、拡" "張セクションインデックスセクションがありません\n" -#: src/elflint.c:733 +#: src/elflint.c:735 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " @@ -1970,29 +1982,29 @@ msgstr "" "クス用に使われる XINDEX\n" #. || sym->st_shndx > SHN_HIRESERVE always false -#: src/elflint.c:745 +#: src/elflint.c:747 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" msgstr "セクション [%2d] '%s': シンボル %zu: 不当なセクションインデックス\n" -#: src/elflint.c:753 +#: src/elflint.c:755 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" msgstr "セクション [%2d] '%s': シンボル %zu: 不明なタイプ\n" -#: src/elflint.c:759 +#: src/elflint.c:761 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" msgstr "セクション [%2d] '%s': シンボル %zu: 不明なシンボルバインディング\n" -#: src/elflint.c:764 +#: src/elflint.c:766 #, 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:772 +#: src/elflint.c:774 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " @@ -2001,7 +2013,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: COMMON はリロケータブルファイル内のみで" "許されます\n" -#: src/elflint.c:776 +#: src/elflint.c:778 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" @@ -2009,7 +2021,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: ローカルな COMMON シンボルは意味がありま" "せん\n" -#: src/elflint.c:780 +#: src/elflint.c:782 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" @@ -2017,12 +2029,12 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: COMMON セクションの機能は意味がありませ" "ん\n" -#: src/elflint.c:831 +#: src/elflint.c:833 #, 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:837 src/elflint.c:862 src/elflint.c:911 +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " @@ -2031,7 +2043,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu は参照されるセクション [%2d] '%s' とは完" "全に一致しません\n" -#: src/elflint.c:846 +#: src/elflint.c:848 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " @@ -2040,7 +2052,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' は " "SHF_TLS フラグが設定されていません\n" -#: src/elflint.c:856 src/elflint.c:904 +#: src/elflint.c:858 src/elflint.c:906 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " @@ -2049,7 +2061,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: st_value 参照されるセクション [%2d] " "'%s' の境界外\n" -#: src/elflint.c:883 +#: src/elflint.c:885 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " @@ -2058,7 +2070,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目がない TLS シ" "ンボル\n" -#: src/elflint.c:889 +#: src/elflint.c:891 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " @@ -2067,7 +2079,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目がない TLS シ" "ンボル\n" -#: src/elflint.c:897 +#: src/elflint.c:899 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " @@ -2076,7 +2088,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' の" "st_value 不足\n" -#: src/elflint.c:924 +#: src/elflint.c:926 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " @@ -2085,7 +2097,7 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外のローカルシン" "ボル\n" -#: src/elflint.c:931 +#: src/elflint.c:933 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " @@ -2094,12 +2106,12 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外の非ローカルシ" "ンボル\n" -#: src/elflint.c:938 +#: src/elflint.c:940 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" msgstr "セクション [%2d] '%s': シンボル %zu: 非ローカルセクションシンボル\n" -#: src/elflint.c:988 +#: src/elflint.c:990 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " @@ -2108,7 +2120,7 @@ msgstr "" "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルが間違ったセクション " "[%2d] を参照しています\n" -#: src/elflint.c:995 +#: src/elflint.c:997 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " @@ -2120,7 +2132,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:1011 +#: src/elflint.c:1013 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " @@ -2129,7 +2141,7 @@ msgstr "" "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボル値 %# は %s のセ" "クションアドレス %# と一致しません\n" -#: src/elflint.c:1018 +#: src/elflint.c:1020 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " @@ -2138,7 +2150,7 @@ msgstr "" "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルサイズ % は %s " "のセクションサイズ % と一致しません\n" -#: src/elflint.c:1026 +#: src/elflint.c:1028 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " @@ -2147,7 +2159,7 @@ msgstr "" "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルはありますが、.got セク" "ションがありません\n" -#: src/elflint.c:1042 +#: src/elflint.c:1044 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " @@ -2156,7 +2168,7 @@ msgstr "" "セクション [%2d] '%s': _DYNAMIC_ シンボル値 %# は動的セグメントアドレ" "ス %# と一致しません\n" -#: src/elflint.c:1049 +#: src/elflint.c:1051 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " @@ -2165,7 +2177,7 @@ msgstr "" "セクション [%2d] '%s': _DYNAMIC シンボルサイズ % は動的セグメントサイ" "ズ % と一致しません\n" -#: src/elflint.c:1062 +#: src/elflint.c:1064 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" @@ -2174,29 +2186,29 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: 省略以外の可視性を持った動的シンボルテー" "ブル中のシンボル\n" -#: src/elflint.c:1066 +#: src/elflint.c:1068 #, 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:1104 +#: src/elflint.c:1106 #, fuzzy, c-format msgid "section [%2d] '%s': cannot get section data.\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:1120 +#: src/elflint.c:1122 #, c-format msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" msgstr "セクション [%2d] '%s': この RELA セクション用に使われる DT_RELCOUNT\n" -#: src/elflint.c:1131 src/elflint.c:1184 +#: src/elflint.c:1133 src/elflint.c:1186 #, 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:1156 src/elflint.c:1209 +#: src/elflint.c:1158 src/elflint.c:1211 #, c-format msgid "" "section [%2d] '%s': relative relocations after index %d as specified by " @@ -2205,7 +2217,7 @@ msgstr "" "セクション [%2d] '%s': UT_RELOCOUNT で指定されたインデックス %d 後の相対リロ" "ケーション\n" -#: src/elflint.c:1162 src/elflint.c:1215 +#: src/elflint.c:1164 src/elflint.c:1217 #, c-format msgid "" "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " @@ -2214,52 +2226,46 @@ msgstr "" "セクション [%2d] '%s': インデックス %zu での非相対リロケーション; %d 相対リ" "ロケーションで指定された DT_RELCOUNT\n" -#: src/elflint.c:1174 +#: src/elflint.c:1176 #, c-format msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" msgstr "セクション [%2d] '%s': この REL セクション用に使われる DT_RELACOUNT\n" -#: src/elflint.c:1257 +#: src/elflint.c:1259 #, c-format msgid "section [%2d] '%s': invalid destination section index\n" msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n" -#: src/elflint.c:1269 +#: src/elflint.c:1271 #, c-format msgid "section [%2d] '%s': invalid destination section type\n" msgstr "セクション [%2d] '%s': 不当な宛先セクションタイプ\n" -#: src/elflint.c:1277 +#: src/elflint.c:1279 #, c-format msgid "section [%2d] '%s': sh_info should be zero\n" msgstr "セクション [%2d] '%s': sh_info はゼロでなければなりません\n" -#: src/elflint.c:1285 +#: src/elflint.c:1287 #, fuzzy, c-format msgid "" "section [%2d] '%s': no relocations for merge-able string sections possible\n" msgstr "" "セクション [%2d] '%s': マージできるセクションのリロケーションは不可能です\n" -#: src/elflint.c:1293 -#, c-format -msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n" -msgstr "" -"セクション [%2d] '%s': セクション項目サイズが ElfXX_Rela と一致しません\n" - -#: src/elflint.c:1353 +#: src/elflint.c:1365 #, c-format msgid "text relocation flag set but there is no read-only segment\n" msgstr "" "テキストリロケーションフラグが設定されていますが、読込み専用セグメントがあり" "ません\n" -#: src/elflint.c:1380 +#: src/elflint.c:1392 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid type\n" msgstr "セクション [%2d] '%s': リロケーション %zu: 不当なタイプ\n" -#: src/elflint.c:1388 +#: src/elflint.c:1400 #, c-format msgid "" "section [%2d] '%s': relocation %zu: relocation type invalid for the file " @@ -2268,13 +2274,13 @@ msgstr "" "セクション [%2d] '%s': リロケーション %zu: このファイル用のリロケーションタイ" "プは不当です\n" -#: src/elflint.c:1396 +#: src/elflint.c:1408 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" msgstr "" "セクション [%2d] '%s': リロケーション %zu: 不当なシンボルインデックス\n" -#: src/elflint.c:1414 +#: src/elflint.c:1426 #, c-format msgid "" "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " @@ -2283,12 +2289,12 @@ msgstr "" "セクション [%2d] '%s': リロケーション %zu: シンボル '_GLOBAL_OFFSET_TABLE_' " "のみが %s と一緒に使用できます\n" -#: src/elflint.c:1431 +#: src/elflint.c:1443 #, c-format msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n" -#: src/elflint.c:1446 +#: src/elflint.c:1458 #, c-format msgid "" "section [%2d] '%s': relocation %zu: copy relocation against symbol of type " @@ -2297,7 +2303,7 @@ msgstr "" "セクション [%2d] '%s': リロケーション %zu: タイプ %s のシンボルに対するコピー" "リロケーション\n" -#: src/elflint.c:1467 +#: src/elflint.c:1479 #, c-format msgid "" "section [%2d] '%s': relocation %zu: read-only section modified but text " @@ -2306,24 +2312,24 @@ msgstr "" "セクション [%2d] '%s': リロケーション %zu: 読込み専用セクションが変更されまし" "たが、テキストリロケーションフラグが設定されていません\n" -#: src/elflint.c:1482 +#: src/elflint.c:1494 #, c-format msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n" msgstr "" "セクション [%2d] '%s': リロケーションがロードされたデータとロードされなかった" "データに対してです\n" -#: src/elflint.c:1522 src/elflint.c:1573 +#: src/elflint.c:1534 src/elflint.c:1585 #, c-format msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" msgstr "" -#: src/elflint.c:1649 +#: src/elflint.c:1687 #, c-format msgid "more than one dynamic section present\n" msgstr "" -#: src/elflint.c:1667 +#: src/elflint.c:1705 #, fuzzy, c-format msgid "" "section [%2d]: referenced as string table for section [%2d] '%s' but section " @@ -2332,427 +2338,427 @@ msgstr "" "セクション [%2d] '%s': セクション [%2d] '%s' 用の文字列テーブルとして参照され" "ていますが、タイプが SHT_STRTAB ではありません\n" -#: src/elflint.c:1675 +#: src/elflint.c:1713 #, c-format msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" msgstr "" -#: src/elflint.c:1680 src/elflint.c:1969 +#: src/elflint.c:1718 src/elflint.c:2008 #, c-format msgid "section [%2d] '%s': sh_info not zero\n" msgstr "" -#: src/elflint.c:1690 +#: src/elflint.c:1728 #, c-format msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" msgstr "" -#: src/elflint.c:1698 +#: src/elflint.c:1736 #, c-format msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n" msgstr "" -#: src/elflint.c:1705 +#: src/elflint.c:1743 #, c-format msgid "section [%2d] '%s': entry %zu: unknown tag\n" msgstr "" -#: src/elflint.c:1716 +#: src/elflint.c:1754 #, c-format msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n" msgstr "" -#: src/elflint.c:1726 +#: src/elflint.c:1764 #, c-format msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" msgstr "" -#: src/elflint.c:1744 +#: src/elflint.c:1782 #, c-format msgid "" "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" msgstr "" -#: src/elflint.c:1757 +#: src/elflint.c:1795 #, 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:1800 +#: src/elflint.c:1839 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" msgstr "" -#: src/elflint.c:1815 +#: src/elflint.c:1854 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must be valid offset in section " "[%2d] '%s'\n" msgstr "" -#: src/elflint.c:1835 src/elflint.c:1863 +#: src/elflint.c:1874 src/elflint.c:1902 #, c-format msgid "section [%2d] '%s': contains %s entry but not %s\n" msgstr "" -#: src/elflint.c:1847 +#: src/elflint.c:1886 #, c-format msgid "section [%2d] '%s': mandatory tag %s not present\n" msgstr "" -#: src/elflint.c:1856 +#: src/elflint.c:1895 #, c-format msgid "section [%2d] '%s': no hash section present\n" msgstr "" -#: src/elflint.c:1871 src/elflint.c:1878 +#: src/elflint.c:1910 src/elflint.c:1917 #, c-format msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n" msgstr "" -#: src/elflint.c:1888 src/elflint.c:1892 +#: src/elflint.c:1927 src/elflint.c:1931 #, c-format msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" msgstr "" -#: src/elflint.c:1898 +#: src/elflint.c:1937 #, c-format msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" msgstr "" -#: src/elflint.c:1909 src/elflint.c:1913 src/elflint.c:1917 src/elflint.c:1921 +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 #, c-format msgid "section [%2d] '%s': %s tag missing in prelinked executable\n" msgstr "" -#: src/elflint.c:1933 +#: src/elflint.c:1972 #, c-format msgid "" "section [%2d] '%s': only relocatable files can have extended section index\n" msgstr "" -#: src/elflint.c:1943 +#: src/elflint.c:1982 #, c-format msgid "" "section [%2d] '%s': extended section index section not for symbol table\n" msgstr "" -#: src/elflint.c:1947 +#: src/elflint.c:1986 #, fuzzy, c-format msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n" msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n" -#: src/elflint.c:1952 +#: src/elflint.c:1991 #, c-format msgid "cannot get data for symbol section\n" msgstr "" -#: src/elflint.c:1955 +#: src/elflint.c:1994 #, c-format msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" msgstr "" -#: src/elflint.c:1964 +#: src/elflint.c:2003 #, c-format msgid "section [%2d] '%s': extended index table too small for symbol table\n" msgstr "" -#: src/elflint.c:1979 +#: src/elflint.c:2018 #, c-format msgid "" "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " "same symbol table\n" msgstr "" -#: src/elflint.c:1997 +#: src/elflint.c:2036 #, c-format msgid "symbol 0 should have zero extended section index\n" msgstr "" -#: src/elflint.c:2009 +#: src/elflint.c:2048 #, c-format msgid "cannot get data for symbol %zu\n" msgstr "" -#: src/elflint.c:2014 +#: src/elflint.c:2053 #, c-format msgid "extended section index is % but symbol index is not XINDEX\n" msgstr "" -#: src/elflint.c:2031 src/elflint.c:2088 +#: src/elflint.c:2070 src/elflint.c:2127 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" msgstr "" -#: src/elflint.c:2045 src/elflint.c:2102 +#: src/elflint.c:2084 src/elflint.c:2141 #, c-format msgid "section [%2d] '%s': chain array too large\n" msgstr "" -#: src/elflint.c:2059 src/elflint.c:2116 +#: src/elflint.c:2098 src/elflint.c:2155 #, c-format msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" msgstr "" -#: src/elflint.c:2069 +#: src/elflint.c:2108 #, c-format msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" msgstr "" -#: src/elflint.c:2126 +#: src/elflint.c:2165 #, c-format msgid "section [%2d] '%s': hash chain reference % out of bounds\n" msgstr "" -#: src/elflint.c:2139 +#: src/elflint.c:2178 #, fuzzy, c-format msgid "section [%2d] '%s': not enough data\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:2151 +#: src/elflint.c:2190 #, 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:2167 +#: src/elflint.c:2206 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected at " "least %ld)\n" msgstr "" -#: src/elflint.c:2176 +#: src/elflint.c:2215 #, c-format msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n" msgstr "" -#: src/elflint.c:2210 +#: src/elflint.c:2249 #, c-format msgid "" "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" msgstr "" -#: src/elflint.c:2231 +#: src/elflint.c:2270 #, c-format msgid "" "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " "undefined\n" msgstr "" -#: src/elflint.c:2244 +#: src/elflint.c:2283 #, c-format msgid "" "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" msgstr "" -#: src/elflint.c:2253 +#: src/elflint.c:2292 #, 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:2283 +#: src/elflint.c:2322 #, c-format msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" msgstr "" -#: src/elflint.c:2288 +#: src/elflint.c:2327 #, c-format msgid "" "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" msgstr "" -#: src/elflint.c:2294 +#: src/elflint.c:2333 #, c-format msgid "section [%2d] '%s': bitmask does not match names in the hash table\n" msgstr "" -#: src/elflint.c:2307 +#: src/elflint.c:2346 #, c-format msgid "section [%2d] '%s': relocatable files cannot have hash tables\n" msgstr "" -#: src/elflint.c:2325 +#: src/elflint.c:2364 #, c-format msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" msgstr "" -#: src/elflint.c:2329 +#: src/elflint.c:2368 #, fuzzy, c-format msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n" msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n" -#: src/elflint.c:2339 +#: src/elflint.c:2378 #, c-format msgid "section [%2d] '%s': hash table entry size incorrect\n" msgstr "" -#: src/elflint.c:2344 +#: src/elflint.c:2383 #, c-format msgid "section [%2d] '%s': not marked to be allocated\n" msgstr "" -#: src/elflint.c:2349 +#: src/elflint.c:2388 #, c-format msgid "" "section [%2d] '%s': hash table has not even room for initial administrative " "entries\n" msgstr "" -#: src/elflint.c:2398 +#: src/elflint.c:2437 #, c-format msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n" msgstr "" -#: src/elflint.c:2422 src/elflint.c:2487 src/elflint.c:2522 +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 #, fuzzy, c-format msgid "hash section [%2zu] '%s' does not contain enough data\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:2443 +#: src/elflint.c:2482 #, fuzzy, c-format msgid "hash section [%2zu] '%s' has zero bit mask words\n" msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/elflint.c:2454 src/elflint.c:2498 src/elflint.c:2535 +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 #, fuzzy, c-format msgid "hash section [%2zu] '%s' uses too much data\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:2469 +#: src/elflint.c:2508 #, c-format msgid "" "hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " "%, nentries: %\n" msgstr "" -#: src/elflint.c:2556 +#: src/elflint.c:2595 #, fuzzy, c-format msgid "hash section [%2zu] '%s' invalid sh_entsize\n" msgstr "セクション [%2d] '%s': 不当な宛先セクションタイプ\n" -#: src/elflint.c:2566 src/elflint.c:2570 +#: src/elflint.c:2605 src/elflint.c:2609 #, c-format msgid "section [%2zu] '%s': reference to symbol index 0\n" msgstr "" -#: src/elflint.c:2577 +#: src/elflint.c:2616 #, 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:2589 +#: src/elflint.c:2628 #, 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:2605 +#: src/elflint.c:2644 #, c-format msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" msgstr "" -#: src/elflint.c:2625 +#: src/elflint.c:2664 #, c-format msgid "" "section [%2d] '%s': section groups only allowed in relocatable object files\n" msgstr "" -#: src/elflint.c:2636 +#: src/elflint.c:2675 #, c-format msgid "section [%2d] '%s': cannot get symbol table: %s\n" msgstr "" -#: src/elflint.c:2641 +#: src/elflint.c:2680 #, c-format msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n" msgstr "" -#: src/elflint.c:2647 +#: src/elflint.c:2686 #, c-format msgid "section [%2d] '%s': invalid symbol index in sh_info\n" msgstr "" -#: src/elflint.c:2652 +#: src/elflint.c:2691 #, c-format msgid "section [%2d] '%s': sh_flags not zero\n" msgstr "" -#: src/elflint.c:2659 +#: src/elflint.c:2698 #, c-format msgid "section [%2d] '%s': cannot get symbol for signature\n" msgstr "" -#: src/elflint.c:2663 +#: src/elflint.c:2702 #, fuzzy, c-format msgid "section [%2d] '%s': cannot get symbol name for signature\n" msgstr "セクション [%2d] '%s': シンボル %d を得られません: %s\n" -#: src/elflint.c:2668 +#: src/elflint.c:2707 #, fuzzy, c-format msgid "section [%2d] '%s': signature symbol cannot be empty string\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:2674 +#: src/elflint.c:2713 #, c-format msgid "section [%2d] '%s': sh_flags not set correctly\n" msgstr "" -#: src/elflint.c:2680 +#: src/elflint.c:2719 #, c-format msgid "section [%2d] '%s': cannot get data: %s\n" msgstr "" -#: src/elflint.c:2689 +#: src/elflint.c:2728 #, c-format msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n" msgstr "" -#: src/elflint.c:2695 +#: src/elflint.c:2734 #, c-format msgid "section [%2d] '%s': section group without flags word\n" msgstr "" -#: src/elflint.c:2703 +#: src/elflint.c:2742 #, c-format msgid "section [%2d] '%s': section group without member\n" msgstr "" -#: src/elflint.c:2707 +#: src/elflint.c:2746 #, c-format msgid "section [%2d] '%s': section group with only one member\n" msgstr "" -#: src/elflint.c:2718 +#: src/elflint.c:2757 #, c-format msgid "section [%2d] '%s': unknown section group flags\n" msgstr "" -#: src/elflint.c:2730 +#: src/elflint.c:2769 #, fuzzy, c-format msgid "section [%2d] '%s': section index %zu out of range\n" msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n" -#: src/elflint.c:2739 +#: src/elflint.c:2778 #, c-format msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" msgstr "" -#: src/elflint.c:2746 +#: src/elflint.c:2785 #, c-format msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" msgstr "" -#: src/elflint.c:2752 +#: src/elflint.c:2791 #, fuzzy, c-format msgid "" "section [%2d] '%s': element %zu references section [%2d] '%s' without " @@ -2761,770 +2767,770 @@ msgstr "" "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' は " "SHF_TLS フラグが設定されていません\n" -#: src/elflint.c:2759 +#: src/elflint.c:2798 #, c-format msgid "section [%2d] '%s' is contained in more than one section group\n" msgstr "" -#: src/elflint.c:2956 +#: src/elflint.c:2995 #, 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:2968 +#: src/elflint.c:3007 #, c-format msgid "" "section [%2d] '%s' has different number of entries than symbol table [%2d] " "'%s'\n" msgstr "" -#: src/elflint.c:2984 +#: src/elflint.c:3023 #, c-format msgid "section [%2d] '%s': symbol %d: cannot read version data\n" msgstr "" -#: src/elflint.c:3000 +#: src/elflint.c:3039 #, c-format msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n" msgstr "" -#: src/elflint.c:3008 +#: src/elflint.c:3047 #, c-format msgid "section [%2d] '%s': symbol %d: local symbol with version\n" msgstr "" -#: src/elflint.c:3022 +#: src/elflint.c:3061 #, c-format msgid "section [%2d] '%s': symbol %d: invalid version index %d\n" msgstr "" -#: src/elflint.c:3027 +#: src/elflint.c:3066 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for defined version\n" msgstr "" -#: src/elflint.c:3037 +#: src/elflint.c:3076 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for requested version\n" msgstr "" -#: src/elflint.c:3090 +#: src/elflint.c:3129 #, c-format msgid "more than one version reference section present\n" msgstr "" -#: src/elflint.c:3098 src/elflint.c:3245 +#: src/elflint.c:3137 src/elflint.c:3284 #, c-format msgid "section [%2d] '%s': sh_link does not link to string table\n" msgstr "" -#: src/elflint.c:3123 src/elflint.c:3299 +#: src/elflint.c:3162 src/elflint.c:3338 #, c-format msgid "section [%2d] '%s': entry %d has wrong version %d\n" msgstr "" -#: src/elflint.c:3130 src/elflint.c:3306 +#: src/elflint.c:3169 src/elflint.c:3345 #, c-format msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" msgstr "" -#: src/elflint.c:3140 +#: src/elflint.c:3179 #, c-format msgid "section [%2d] '%s': entry %d has invalid file reference\n" msgstr "" -#: src/elflint.c:3148 +#: src/elflint.c:3187 #, c-format msgid "section [%2d] '%s': entry %d references unknown dependency\n" msgstr "" -#: src/elflint.c:3160 +#: src/elflint.c:3199 #, c-format msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n" msgstr "" -#: src/elflint.c:3168 +#: src/elflint.c:3207 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " "reference\n" msgstr "" -#: src/elflint.c:3177 +#: src/elflint.c:3216 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " "%#x, expected %#x\n" msgstr "" -#: src/elflint.c:3186 +#: src/elflint.c:3225 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " "name '%s'\n" msgstr "" -#: src/elflint.c:3197 +#: src/elflint.c:3236 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" msgstr "" -#: src/elflint.c:3214 src/elflint.c:3390 +#: src/elflint.c:3253 src/elflint.c:3429 #, c-format msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n" msgstr "" -#: src/elflint.c:3222 src/elflint.c:3398 +#: src/elflint.c:3261 src/elflint.c:3437 #, 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:3237 +#: src/elflint.c:3276 #, c-format msgid "more than one version definition section present\n" msgstr "" -#: src/elflint.c:3284 +#: src/elflint.c:3323 #, c-format msgid "section [%2d] '%s': more than one BASE definition\n" msgstr "" -#: src/elflint.c:3288 +#: src/elflint.c:3327 #, c-format msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n" msgstr "" -#: src/elflint.c:3294 +#: src/elflint.c:3333 #, c-format msgid "section [%2d] '%s': entry %d has unknown flag\n" msgstr "" -#: src/elflint.c:3321 +#: src/elflint.c:3360 #, c-format msgid "section [%2d] '%s': entry %d has invalid name reference\n" msgstr "" -#: src/elflint.c:3328 +#: src/elflint.c:3367 #, c-format msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n" msgstr "" -#: src/elflint.c:3336 +#: src/elflint.c:3375 #, c-format msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n" msgstr "" -#: src/elflint.c:3356 +#: src/elflint.c:3395 #, c-format msgid "" "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" msgstr "" -#: src/elflint.c:3373 +#: src/elflint.c:3412 #, c-format msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" msgstr "" -#: src/elflint.c:3406 +#: src/elflint.c:3445 #, c-format msgid "section [%2d] '%s': no BASE definition\n" msgstr "" -#: src/elflint.c:3422 +#: src/elflint.c:3461 #, c-format msgid "section [%2d] '%s': unknown parent version '%s'\n" msgstr "" -#: src/elflint.c:3447 +#: src/elflint.c:3486 #, c-format msgid "section [%2d] '%s': empty object attributes section\n" msgstr "" -#: src/elflint.c:3463 +#: src/elflint.c:3502 #, c-format msgid "section [%2d] '%s': unrecognized attribute format\n" msgstr "" -#: src/elflint.c:3474 +#: src/elflint.c:3513 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute section\n" msgstr "" -#: src/elflint.c:3483 +#: src/elflint.c:3522 #, c-format msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n" msgstr "" -#: src/elflint.c:3495 +#: src/elflint.c:3534 #, c-format msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n" msgstr "" -#: src/elflint.c:3512 +#: src/elflint.c:3551 #, c-format msgid "" "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" msgstr "" -#: src/elflint.c:3521 +#: src/elflint.c:3560 #, c-format msgid "section [%2d] '%s': offset %zu: truncated attribute section\n" msgstr "" -#: src/elflint.c:3530 +#: src/elflint.c:3569 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" msgstr "" -#: src/elflint.c:3545 +#: src/elflint.c:3584 #, c-format msgid "" "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" msgstr "" #. Tag_File -#: src/elflint.c:3556 +#: src/elflint.c:3595 #, c-format msgid "" "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" msgstr "" -#: src/elflint.c:3574 +#: src/elflint.c:3616 #, c-format msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" msgstr "" -#: src/elflint.c:3585 +#: src/elflint.c:3627 #, c-format msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n" msgstr "" -#: src/elflint.c:3598 +#: src/elflint.c:3640 #, c-format msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" msgstr "" -#: src/elflint.c:3602 +#: src/elflint.c:3644 #, c-format msgid "" "section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" msgstr "" -#: src/elflint.c:3612 +#: src/elflint.c:3654 #, c-format msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n" msgstr "" -#: src/elflint.c:3618 +#: src/elflint.c:3660 #, c-format msgid "" "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" msgstr "" -#: src/elflint.c:3715 +#: src/elflint.c:3758 #, c-format msgid "cannot get section header of zeroth section\n" msgstr "" -#: src/elflint.c:3719 +#: src/elflint.c:3762 #, c-format msgid "zeroth section has nonzero name\n" msgstr "" -#: src/elflint.c:3721 +#: src/elflint.c:3764 #, c-format msgid "zeroth section has nonzero type\n" msgstr "" -#: src/elflint.c:3723 +#: src/elflint.c:3766 #, c-format msgid "zeroth section has nonzero flags\n" msgstr "" -#: src/elflint.c:3725 +#: src/elflint.c:3768 #, c-format msgid "zeroth section has nonzero address\n" msgstr "" -#: src/elflint.c:3727 +#: src/elflint.c:3770 #, c-format msgid "zeroth section has nonzero offset\n" msgstr "" -#: src/elflint.c:3729 +#: src/elflint.c:3772 #, c-format msgid "zeroth section has nonzero align value\n" msgstr "" -#: src/elflint.c:3731 +#: src/elflint.c:3774 #, c-format msgid "zeroth section has nonzero entry size value\n" msgstr "" -#: src/elflint.c:3734 +#: src/elflint.c:3777 #, c-format msgid "" "zeroth section has nonzero size value while ELF header has nonzero shnum " "value\n" msgstr "" -#: src/elflint.c:3738 +#: src/elflint.c:3781 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " "overflow in shstrndx\n" msgstr "" -#: src/elflint.c:3742 +#: src/elflint.c:3785 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " "overflow in phnum\n" msgstr "" -#: src/elflint.c:3760 +#: src/elflint.c:3803 #, c-format msgid "cannot get section header for section [%2zu] '%s': %s\n" msgstr "" -#: src/elflint.c:3769 +#: src/elflint.c:3812 #, c-format msgid "section [%2zu]: invalid name\n" msgstr "" -#: src/elflint.c:3796 +#: src/elflint.c:3839 #, c-format msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" msgstr "" -#: src/elflint.c:3813 +#: src/elflint.c:3856 #, c-format msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" msgstr "" -#: src/elflint.c:3831 +#: src/elflint.c:3874 #, c-format msgid "" "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" msgstr "" -#: src/elflint.c:3848 +#: src/elflint.c:3891 #, c-format msgid "section [%2zu] '%s' present in object file\n" msgstr "" -#: src/elflint.c:3854 src/elflint.c:3886 +#: src/elflint.c:3897 src/elflint.c:3929 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" msgstr "" -#: src/elflint.c:3859 src/elflint.c:3891 +#: src/elflint.c:3902 src/elflint.c:3934 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " "segments\n" msgstr "" -#: src/elflint.c:3867 +#: src/elflint.c:3910 #, c-format msgid "" "section [%2zu] '%s' is extension section index table in non-object file\n" msgstr "" -#: src/elflint.c:3910 +#: src/elflint.c:3953 #, c-format msgid "section [%2zu] '%s': size not multiple of entry size\n" msgstr "" -#: src/elflint.c:3915 +#: src/elflint.c:3958 #, c-format msgid "cannot get section header\n" msgstr "" -#: src/elflint.c:3925 +#: src/elflint.c:3968 #, c-format msgid "section [%2zu] '%s' has unsupported type %d\n" msgstr "" -#: src/elflint.c:3945 +#: src/elflint.c:3988 #, c-format msgid "" "section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" msgstr "" -#: src/elflint.c:3955 +#: src/elflint.c:3998 #, c-format msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" msgstr "" -#: src/elflint.c:3963 +#: src/elflint.c:4006 #, c-format msgid "section [%2zu] '%s': thread-local data sections address not zero\n" msgstr "" -#: src/elflint.c:3973 +#: src/elflint.c:4016 #, fuzzy, c-format msgid "section [%2zu] '%s': allocated section cannot be compressed\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:3978 +#: src/elflint.c:4021 #, fuzzy, c-format msgid "section [%2zu] '%s': nobits section cannot be compressed\n" msgstr "セクション [%2d] '%s': セクションデータを得られません\n" -#: src/elflint.c:3984 +#: src/elflint.c:4027 #, c-format msgid "" "section [%2zu] '%s': compressed section with no compression header: %s\n" msgstr "" -#: src/elflint.c:3990 +#: src/elflint.c:4033 #, c-format msgid "section [%2zu] '%s': invalid section reference in link value\n" msgstr "" -#: src/elflint.c:3995 +#: src/elflint.c:4038 #, c-format msgid "section [%2zu] '%s': invalid section reference in info value\n" msgstr "" -#: src/elflint.c:4002 +#: src/elflint.c:4045 #, c-format msgid "section [%2zu] '%s': strings flag set without merge flag\n" msgstr "" -#: src/elflint.c:4007 +#: src/elflint.c:4050 #, c-format msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" msgstr "" -#: src/elflint.c:4026 +#: src/elflint.c:4069 #, c-format msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n" msgstr "" -#: src/elflint.c:4035 +#: src/elflint.c:4078 #, c-format msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n" msgstr "" -#: src/elflint.c:4042 +#: src/elflint.c:4085 #, c-format msgid "section [%2zu] '%s' is both executable and writable\n" msgstr "" -#: src/elflint.c:4073 +#: src/elflint.c:4116 #, c-format msgid "" "section [%2zu] '%s' not fully contained in segment of program header entry " "%d\n" msgstr "" -#: src/elflint.c:4083 +#: src/elflint.c:4126 #, 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:4109 +#: src/elflint.c:4152 #, 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:4120 +#: src/elflint.c:4163 #, 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:4131 +#: src/elflint.c:4174 #, c-format msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n" msgstr "" -#: src/elflint.c:4141 +#: src/elflint.c:4184 #, c-format msgid "section [%2zu] '%s' is writable in unwritable segment %d\n" msgstr "" -#: src/elflint.c:4151 +#: src/elflint.c:4194 #, c-format msgid "" "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" msgstr "" -#: src/elflint.c:4157 +#: src/elflint.c:4200 #, 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:4165 +#: src/elflint.c:4208 #, c-format msgid "" "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" msgstr "" -#: src/elflint.c:4216 +#: src/elflint.c:4263 #, c-format msgid "more than one version symbol table present\n" msgstr "" -#: src/elflint.c:4239 +#: src/elflint.c:4286 #, c-format msgid "INTERP program header entry but no .interp section\n" msgstr "" -#: src/elflint.c:4250 +#: src/elflint.c:4297 #, c-format msgid "" "loadable segment [%u] is executable but contains no executable sections\n" msgstr "" -#: src/elflint.c:4256 +#: src/elflint.c:4303 #, c-format msgid "loadable segment [%u] is writable but contains no writable sections\n" msgstr "" -#: src/elflint.c:4267 +#: src/elflint.c:4314 #, c-format msgid "" "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " "exist\n" msgstr "" -#: src/elflint.c:4280 +#: src/elflint.c:4327 #, c-format msgid "duplicate version index %d\n" msgstr "" -#: src/elflint.c:4294 +#: src/elflint.c:4341 #, c-format msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n" msgstr "" -#: src/elflint.c:4343 +#: src/elflint.c:4390 #, c-format msgid "phdr[%d]: unknown core file note type % at offset %\n" msgstr "" -#: src/elflint.c:4347 +#: src/elflint.c:4394 #, c-format msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" msgstr "" -#: src/elflint.c:4403 +#: src/elflint.c:4450 #, c-format msgid "" "phdr[%d]: unknown object file note type % with owner name '%s' at " "offset %zu\n" msgstr "" -#: src/elflint.c:4408 +#: src/elflint.c:4455 #, c-format msgid "" "section [%2d] '%s': unknown object file note type % with owner name " "'%s' at offset %zu\n" msgstr "" -#: src/elflint.c:4427 +#: src/elflint.c:4474 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4447 +#: src/elflint.c:4494 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "" -#: src/elflint.c:4450 +#: src/elflint.c:4497 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4471 +#: src/elflint.c:4518 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" -#: src/elflint.c:4478 +#: src/elflint.c:4525 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "" -#: src/elflint.c:4481 +#: src/elflint.c:4528 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "" -#: src/elflint.c:4499 +#: src/elflint.c:4546 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" msgstr "" -#: src/elflint.c:4514 +#: src/elflint.c:4561 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "" -#: src/elflint.c:4524 +#: src/elflint.c:4571 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" -#: src/elflint.c:4535 +#: src/elflint.c:4582 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "" -#: src/elflint.c:4543 +#: src/elflint.c:4590 #, c-format msgid "more than one TLS entry in program header\n" msgstr "" -#: src/elflint.c:4550 +#: src/elflint.c:4597 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "" -#: src/elflint.c:4564 +#: src/elflint.c:4611 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4567 +#: src/elflint.c:4614 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4577 +#: src/elflint.c:4624 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "" -#: src/elflint.c:4598 +#: src/elflint.c:4645 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "" -#: src/elflint.c:4609 +#: src/elflint.c:4656 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" -#: src/elflint.c:4616 +#: src/elflint.c:4663 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" msgstr "" -#: src/elflint.c:4625 src/elflint.c:4648 +#: src/elflint.c:4672 src/elflint.c:4695 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "" -#: src/elflint.c:4654 +#: src/elflint.c:4701 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "" -#: src/elflint.c:4681 +#: src/elflint.c:4728 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" -#: src/elflint.c:4684 +#: src/elflint.c:4731 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" -#: src/elflint.c:4697 +#: src/elflint.c:4744 #, c-format msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n" msgstr "" -#: src/elflint.c:4705 +#: src/elflint.c:4752 #, c-format msgid "call frame search table must be allocated\n" msgstr "" -#: src/elflint.c:4708 +#: src/elflint.c:4755 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "" -#: src/elflint.c:4712 +#: src/elflint.c:4759 #, c-format msgid "call frame search table must not be writable\n" msgstr "" -#: src/elflint.c:4715 +#: src/elflint.c:4762 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "" -#: src/elflint.c:4720 +#: src/elflint.c:4767 #, c-format msgid "call frame search table must not be executable\n" msgstr "" -#: src/elflint.c:4723 +#: src/elflint.c:4770 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "" -#: src/elflint.c:4737 +#: src/elflint.c:4784 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "" -#: src/elflint.c:4744 +#: src/elflint.c:4791 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "" -#: src/elflint.c:4747 +#: src/elflint.c:4794 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " "alignment\n" msgstr "" -#: src/elflint.c:4760 +#: src/elflint.c:4807 #, 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:4794 +#: src/elflint.c:4841 #, c-format msgid "cannot read ELF header: %s\n" msgstr "" -#: src/elflint.c:4806 +#: src/elflint.c:4853 #, fuzzy, c-format msgid "cannot create backend for ELF file\n" msgstr "新しいファイルを生成できません" -#: src/elflint.c:4827 +#: src/elflint.c:4874 #, c-format msgid "text relocation flag set but not needed\n" msgstr "" @@ -3740,7 +3746,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: 内部エラー %d (%s-%s): %s" #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 -#: src/strip.c:2766 +#: src/strip.c:2763 #, c-format msgid "while closing '%s'" msgstr "'%s' を閉じている最中" @@ -3784,13 +3790,13 @@ msgstr "%s%s%s: ファイル形式を認識できません" msgid "cannot create search tree" msgstr "検索ツリーを生成できません" -#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663 -#: src/readelf.c:1471 src/readelf.c:1620 src/readelf.c:1847 src/readelf.c:2084 -#: src/readelf.c:2273 src/readelf.c:2451 src/readelf.c:2526 src/readelf.c:2791 -#: src/readelf.c:2866 src/readelf.c:2952 src/readelf.c:3547 src/readelf.c:3595 -#: src/readelf.c:3664 src/readelf.c:11581 src/readelf.c:12771 -#: src/readelf.c:12981 src/readelf.c:13049 src/size.c:396 src/size.c:467 -#: src/strip.c:1093 +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 #, c-format msgid "cannot get section header string table index" msgstr "セクションヘッダー文字列テーブル索引が得られません" @@ -3897,7 +3903,7 @@ msgstr "NAME セクションの情報のみを表示" msgid "Show information from FILEs (a.out by default)." msgstr "FILE から情報を表示する (デフォルトでは a.out)" -#: src/objdump.c:217 src/readelf.c:608 +#: src/objdump.c:217 src/readelf.c:630 msgid "No operation specified.\n" msgstr "操作が指定されていません。\n" @@ -3906,11 +3912,11 @@ msgstr "操作が指定されていません。\n" msgid "while close `%s'" msgstr "" -#: src/objdump.c:362 src/readelf.c:2179 src/readelf.c:2370 +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 msgid "INVALID SYMBOL" msgstr "不当なシンボル" -#: src/objdump.c:377 src/readelf.c:2213 src/readelf.c:2406 +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 msgid "INVALID SECTION" msgstr "不当なセクション" @@ -3964,87 +3970,87 @@ msgstr "'%s' はアーカイブではありません" msgid "error while freeing sub-ELF descriptor: %s" msgstr "" -#: src/readelf.c:96 +#: src/readelf.c:97 msgid "ELF input selection:" msgstr "ELF入力選択:" -#: src/readelf.c:98 +#: src/readelf.c:99 msgid "" "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" msgstr "" "ELF 入力データとして SECTION (デフォルトでは .gnu_debugdata) を使用する" -#: src/readelf.c:101 +#: src/readelf.c:102 msgid "" "Used with -w to find the skeleton Compile Units in FILE associated with the " "Split Compile units in a .dwo input file" msgstr "" -#: src/readelf.c:103 +#: src/readelf.c:104 msgid "ELF output selection:" msgstr "ELF出力選択:" -#: src/readelf.c:105 +#: src/readelf.c:106 msgid "All these plus -p .strtab -p .dynstr -p .comment" msgstr "" -#: src/readelf.c:106 +#: src/readelf.c:107 msgid "Display the dynamic segment" msgstr "動的セグメントを表示" -#: src/readelf.c:107 +#: src/readelf.c:108 msgid "Display the ELF file header" msgstr "ELF ファイルヘッダーを表示" -#: src/readelf.c:109 +#: src/readelf.c:110 msgid "Display histogram of bucket list lengths" msgstr "バケットリスト長のヒストグラムを表示" -#: src/readelf.c:110 +#: src/readelf.c:111 msgid "Display the program headers" msgstr "プログラムヘッダーを表示" -#: src/readelf.c:112 +#: src/readelf.c:113 msgid "Display relocations" msgstr "リロケーションを表示" -#: src/readelf.c:113 +#: src/readelf.c:114 msgid "Display the section groups" msgstr "セクショングループを表示" -#: src/readelf.c:114 +#: src/readelf.c:115 msgid "Display the sections' headers" msgstr "セクションヘッダーを表示" -#: src/readelf.c:117 +#: src/readelf.c:118 msgid "Display the symbol table sections" msgstr "シンボルテーブルセクションを表示" -#: src/readelf.c:120 +#: src/readelf.c:121 msgid "Display (only) the dynamic symbol table" msgstr "動的シンボルテーブル(のみ)を表示" -#: src/readelf.c:121 +#: src/readelf.c:122 msgid "Display versioning information" msgstr "バージョニング情報を表示" -#: src/readelf.c:122 +#: src/readelf.c:123 msgid "Display the ELF notes" msgstr "ELF notes を表示" -#: src/readelf.c:124 +#: src/readelf.c:125 msgid "Display architecture specific information, if any" msgstr "(もしあれば)アーキテクチャー固有の情報を表示" -#: src/readelf.c:126 +#: src/readelf.c:127 msgid "Display sections for exception handling" msgstr "例外ハンドリングのセクションを表示" -#: src/readelf.c:128 +#: src/readelf.c:129 msgid "Additional output selection:" msgstr "追加の出力選択:" -#: src/readelf.c:130 +#: src/readelf.c:131 #, fuzzy msgid "" "Display DWARF section content. SECTION can be one of abbrev, addr, aranges, " @@ -4054,81 +4060,81 @@ msgstr "" "DWARF セクションの内容を表示。SECTION は addrevか、aranges、frame、info、" "loc、ranges、pubnames、str、macinfo、exception のいずれかです" -#: src/readelf.c:134 +#: src/readelf.c:135 msgid "Dump the uninterpreted contents of SECTION, by number or name" msgstr "SECTION の 未解釈の 内容を ダンプする。 番号 または 名前で指定する" -#: src/readelf.c:136 +#: src/readelf.c:137 msgid "Print string contents of sections" msgstr "セクションの文字列内容を表示" -#: src/readelf.c:139 +#: src/readelf.c:140 msgid "Display the symbol index of an archive" msgstr "アーカイブのシンボル索引を表示" -#: src/readelf.c:141 +#: src/readelf.c:142 msgid "Use the dynamic segment when possible for displaying info" msgstr "" -#: src/readelf.c:143 +#: src/readelf.c:144 msgid "Output control:" msgstr "出力制御:" -#: src/readelf.c:145 +#: src/readelf.c:146 msgid "Do not find symbol names for addresses in DWARF data" msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない" -#: src/readelf.c:147 +#: src/readelf.c:148 #, fuzzy msgid "" "Display just offsets instead of resolving values to addresses in DWARF data" msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない" -#: src/readelf.c:149 +#: src/readelf.c:150 msgid "Ignored for compatibility (lines always wide)" msgstr "" -#: src/readelf.c:151 +#: src/readelf.c:152 msgid "" "Show compression information for compressed sections (when used with -S); " "decompress section before dumping data (when used with -p or -x)" msgstr "" #. Short description of program. -#: src/readelf.c:156 +#: src/readelf.c:157 msgid "Print information from ELF file in human-readable form." msgstr "ELF ファイルから人間が読める形で情報を表示する。" #. Look up once. -#: src/readelf.c:373 +#: src/readelf.c:395 msgid "yes" msgstr "はい" -#: src/readelf.c:374 +#: src/readelf.c:396 msgid "no" msgstr "いいえ" -#: src/readelf.c:576 +#: src/readelf.c:598 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "不明な DWARF デバッグセクション `%s'.\n" -#: src/readelf.c:647 src/readelf.c:758 +#: src/readelf.c:669 src/readelf.c:780 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "Elf 記述子を生成できません: %s" -#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188 +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 #, c-format msgid "cannot determine number of sections: %s" msgstr "セクション数を決定できません: %s" -#: src/readelf.c:672 src/readelf.c:1287 src/readelf.c:1495 +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 #, c-format msgid "cannot get section: %s" msgstr "セクションを取得できません: %s" -#: src/readelf.c:681 src/readelf.c:1294 src/readelf.c:1502 src/readelf.c:13001 +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 @@ -4137,114 +4143,120 @@ msgstr "セクションを取得できません: %s" msgid "cannot get section header: %s" msgstr "セクションヘッダーを取得できません: %s" -#: src/readelf.c:689 +#: src/readelf.c:711 #, c-format msgid "cannot get section name" msgstr "セクション名を取得できません" -#: src/readelf.c:698 src/readelf.c:6797 src/readelf.c:10854 src/readelf.c:10956 -#: src/readelf.c:11134 +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 #, c-format msgid "cannot get %s content: %s" msgstr "%s の内容を取得できません: %s" -#: src/readelf.c:714 +#: src/readelf.c:736 #, c-format msgid "cannot create temp file '%s'" msgstr "一時ファイル '%s' を作成できません" -#: src/readelf.c:723 +#: src/readelf.c:745 #, c-format msgid "cannot write section data" msgstr "セクションデータを書き込みできません" -#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775 +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "Elf 記述子を閉じている時にエラー: %s" -#: src/readelf.c:736 +#: src/readelf.c:758 #, c-format msgid "error while rewinding file descriptor" msgstr "ファイル記述子を巻き戻している時にエラー" -#: src/readelf.c:770 +#: src/readelf.c:792 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "'%s' はアーカイブではなく、アーカイブ索引を表示できません" -#: src/readelf.c:874 +#: src/readelf.c:896 #, c-format msgid "cannot stat input file" msgstr "入力ファイルを stat できません" -#: src/readelf.c:876 +#: src/readelf.c:898 #, c-format msgid "input file is empty" msgstr "入力ファイルが空です" -#: src/readelf.c:878 +#: src/readelf.c:900 #, c-format msgid "failed reading '%s': %s" msgstr "'%s' の読込みに失敗: %s" -#: src/readelf.c:907 +#: src/readelf.c:929 #, fuzzy, c-format msgid "No such section '%s' in '%s'" msgstr "セクション [%Zu] '%s' からデータが得られません: %s" -#: src/readelf.c:966 +#: src/readelf.c:988 #, c-format msgid "cannot read ELF header: %s" msgstr "ELF ヘッダーを読み込めません: %s" -#: src/readelf.c:974 +#: src/readelf.c:996 #, c-format msgid "cannot create EBL handle" msgstr "EBL ハンドルを作成できません" -#: src/readelf.c:985 +#: src/readelf.c:1007 #, c-format msgid "cannot determine number of program headers: %s" msgstr "プログラムヘッダの数を決定できません: %s" -#: src/readelf.c:1017 +#: src/readelf.c:1039 #, c-format msgid "cannot read ELF: %s" msgstr "ELFを読み込めません: %s" -#: src/readelf.c:1078 +#: src/readelf.c:1072 +#, fuzzy +#| msgid "cannot get section: %s" +msgid "cannot find section" +msgstr "セクションを取得できません: %s" + +#: src/readelf.c:1109 msgid "NONE (None)" msgstr "なし (なし)" -#: src/readelf.c:1079 +#: src/readelf.c:1110 msgid "REL (Relocatable file)" msgstr "REL (リロケータブルファイル)" -#: src/readelf.c:1080 +#: src/readelf.c:1111 msgid "EXEC (Executable file)" msgstr "(EXEC (実行ファイル)" -#: src/readelf.c:1081 +#: src/readelf.c:1112 msgid "DYN (Shared object file)" msgstr "DYN (共用オブジェクトファイル)" -#: src/readelf.c:1082 +#: src/readelf.c:1113 msgid "CORE (Core file)" msgstr "CORE (コアファイル)" -#: src/readelf.c:1087 +#: src/readelf.c:1118 #, c-format msgid "OS Specific: (%x)\n" msgstr "OS 固有: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1089 +#: src/readelf.c:1120 #, c-format msgid "Processor Specific: (%x)\n" msgstr "プロセッサー固有: (%x)\n" -#: src/readelf.c:1099 +#: src/readelf.c:1130 msgid "" "ELF Header:\n" " Magic: " @@ -4252,7 +4264,7 @@ msgstr "" "ELF ヘッダー:\n" " マジック: " -#: src/readelf.c:1103 +#: src/readelf.c:1134 #, c-format msgid "" "\n" @@ -4261,123 +4273,123 @@ msgstr "" "\n" " クラス: %s\n" -#: src/readelf.c:1108 +#: src/readelf.c:1139 #, c-format msgid " Data: %s\n" msgstr " データ: %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1145 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " 識別バージョン: %hhd %s\n" -#: src/readelf.c:1116 src/readelf.c:1138 +#: src/readelf.c:1147 src/readelf.c:1169 msgid "(current)" msgstr "(現在)" -#: src/readelf.c:1120 +#: src/readelf.c:1151 #, c-format msgid " OS/ABI: %s\n" msgstr " OS/ABI: %s\n" -#: src/readelf.c:1123 +#: src/readelf.c:1154 #, c-format msgid " ABI Version: %hhd\n" msgstr " ABI バージョン: %hhd\n" -#: src/readelf.c:1126 +#: src/readelf.c:1157 msgid " Type: " msgstr " タイプ: " -#: src/readelf.c:1131 +#: src/readelf.c:1162 #, c-format msgid " Machine: %s\n" msgstr " マシン : %s\n" -#: src/readelf.c:1133 +#: src/readelf.c:1164 #, fuzzy, c-format msgid " Machine: : 0x%x\n" msgstr " マシン : %s\n" -#: src/readelf.c:1136 +#: src/readelf.c:1167 #, c-format msgid " Version: %d %s\n" msgstr " バージョン: %d %s\n" -#: src/readelf.c:1140 +#: src/readelf.c:1171 #, c-format msgid " Entry point address: %#\n" msgstr " 入口点アドレス : %#\n" -#: src/readelf.c:1143 +#: src/readelf.c:1174 #, c-format msgid " Start of program headers: % %s\n" msgstr " プログラムヘッダーの開始: % %s\n" -#: src/readelf.c:1144 src/readelf.c:1147 +#: src/readelf.c:1175 src/readelf.c:1178 msgid "(bytes into file)" msgstr "(ファイルへのバイト数)" -#: src/readelf.c:1146 +#: src/readelf.c:1177 #, c-format msgid " Start of section headers: % %s\n" msgstr " セクションヘッダーの開始: % %s\n" -#: src/readelf.c:1149 +#: src/readelf.c:1180 #, c-format msgid " Flags: %s\n" msgstr " フラグ: %s\n" -#: src/readelf.c:1152 +#: src/readelf.c:1183 #, c-format msgid " Size of this header: % %s\n" msgstr " このヘッダーの大きさ: % %s\n" -#: src/readelf.c:1153 src/readelf.c:1156 src/readelf.c:1173 +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 msgid "(bytes)" msgstr "(バイト)" -#: src/readelf.c:1155 +#: src/readelf.c:1186 #, c-format msgid " Size of program header entries: % %s\n" msgstr " プログラムヘッダー項目の大きさ:% %s\n" -#: src/readelf.c:1158 +#: src/readelf.c:1189 #, fuzzy, c-format msgid " Number of program headers entries: %" msgstr " プログラムヘッダー項目の数 : %\n" -#: src/readelf.c:1165 +#: src/readelf.c:1196 #, fuzzy, c-format msgid " (% in [0].sh_info)" msgstr "([0].sh_link の %)" -#: src/readelf.c:1168 src/readelf.c:1185 src/readelf.c:1199 +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 msgid " ([0] not available)" msgstr "([0]は使えません)" -#: src/readelf.c:1172 +#: src/readelf.c:1203 #, c-format msgid " Size of section header entries: % %s\n" msgstr " セクションヘッダー項目の大きさ:% %s\n" -#: src/readelf.c:1175 +#: src/readelf.c:1206 #, c-format msgid " Number of section headers entries: %" msgstr " セクションヘッダー項目の数 : %" -#: src/readelf.c:1182 +#: src/readelf.c:1213 #, c-format msgid " (% in [0].sh_size)" msgstr " ([0].sh_size の %)" #. We managed to get the zeroth section. -#: src/readelf.c:1195 +#: src/readelf.c:1226 #, c-format msgid " (% in [0].sh_link)" msgstr "([0].sh_link の %)" -#: src/readelf.c:1203 +#: src/readelf.c:1234 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4386,7 +4398,7 @@ msgstr "" " セクションヘッダー文字列テーブル索引: XINDEX%s\n" "\n" -#: src/readelf.c:1207 +#: src/readelf.c:1238 #, c-format msgid "" " Section header string table index: %\n" @@ -4395,12 +4407,12 @@ msgstr "" " セクションヘッダー文字列テーブル索引: %\n" "\n" -#: src/readelf.c:1253 src/readelf.c:1461 +#: src/readelf.c:1288 src/readelf.c:1496 #, fuzzy, c-format msgid "cannot get number of sections: %s" msgstr "セクション数を決定できません: %s" -#: src/readelf.c:1256 +#: src/readelf.c:1291 #, fuzzy, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4409,16 +4421,16 @@ msgstr "" "オフセット %2$# から始まる %1$d 個のセクションヘッダーがあります:\n" "\n" -#: src/readelf.c:1264 +#: src/readelf.c:1299 #, fuzzy, c-format msgid "cannot get section header string table index: %s" msgstr "セクションヘッダー文字列テーブル索引が得られません" -#: src/readelf.c:1267 +#: src/readelf.c:1302 msgid "Section Headers:" msgstr "セクションヘッダー:" -#: src/readelf.c:1270 +#: src/readelf.c:1305 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4426,7 +4438,7 @@ msgstr "" "[番] 名前 タイプ アドレス オフセ 大きさ ES フラグLk " "Inf Al" -#: src/readelf.c:1272 +#: src/readelf.c:1307 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4434,35 +4446,35 @@ msgstr "" "[番] 名前 タイプ アドレス オフセ 大きさ ES " "フラグLk Inf Al" -#: src/readelf.c:1277 +#: src/readelf.c:1312 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1279 +#: src/readelf.c:1314 msgid " [Compression Size Al]" msgstr "" -#: src/readelf.c:1357 +#: src/readelf.c:1392 #, fuzzy, c-format msgid "bad compression header for section %zd: %s" msgstr "セクションヘッダー文字列セクションを生成できません: %s" -#: src/readelf.c:1368 +#: src/readelf.c:1403 #, fuzzy, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "セクションからデータを得られません %d: %s" -#: src/readelf.c:1386 +#: src/readelf.c:1421 msgid "Program Headers:" msgstr "プログラムヘッダー:" -#: src/readelf.c:1388 +#: src/readelf.c:1423 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " タイプ オフセ 仮アドレス 物アドレス ファイ量 メモ量 Flg 調整 " -#: src/readelf.c:1391 +#: src/readelf.c:1426 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4470,12 +4482,12 @@ msgstr "" " タイプ オフセ 仮想アドレス 物理アドレス ファイル量メモ" "量 Flg 調整 " -#: src/readelf.c:1448 +#: src/readelf.c:1483 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[プログラム割込みを要求: %s]\n" -#: src/readelf.c:1473 +#: src/readelf.c:1508 msgid "" "\n" " Section to Segment mapping:\n" @@ -4485,12 +4497,12 @@ msgstr "" " セクションからセグメントへのマッビング:\n" " セグメント セクション..." -#: src/readelf.c:1484 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#: src/readelf.c:1519 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:1628 +#: src/readelf.c:1663 #, c-format msgid "" "\n" @@ -4503,7 +4515,7 @@ msgstr[0] "" "署名 '%3$s' を持つ COMDAT セクショングループ [%1$2zu] '%2$s' には %4$zu 個の" "項目があります:\n" -#: src/readelf.c:1633 +#: src/readelf.c:1668 #, c-format msgid "" "\n" @@ -4516,31 +4528,32 @@ msgstr[0] "" "署名 '%3$s' を持つセクショングループ [%1$2zu] '%2$s' には %4$zu 個の項目があ" "ります:\n" -#: src/readelf.c:1641 +#: src/readelf.c:1676 msgid "" msgstr "<不当なシンボル>" -#: src/readelf.c:1655 +#: src/readelf.c:1690 msgid "" msgstr "<不当なセクション>" -#: src/readelf.c:1678 src/readelf.c:2461 src/readelf.c:3563 src/readelf.c:12873 -#: src/readelf.c:12880 src/readelf.c:12924 src/readelf.c:12931 +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 msgid "Couldn't uncompress section" msgstr "" -#: src/readelf.c:1682 src/readelf.c:2466 src/readelf.c:3567 +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 #, fuzzy, c-format msgid "cannot get section [%zd] header: %s" msgstr "セクションヘッダーを得られません: %s" -#: src/readelf.c:1851 src/readelf.c:2532 src/readelf.c:2797 src/readelf.c:2872 -#: src/readelf.c:3175 src/readelf.c:3249 src/readelf.c:5570 +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 #, fuzzy, c-format msgid "invalid sh_link value in section %zu" msgstr "不当な .debug_line セクション" -#: src/readelf.c:1854 +#: src/readelf.c:1889 #, c-format msgid "" "\n" @@ -4556,7 +4569,7 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:1867 +#: src/readelf.c:1902 #, fuzzy, c-format #| msgid "" #| "\n" @@ -4580,42 +4593,42 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:1877 +#: src/readelf.c:1912 msgid " Type Value\n" msgstr " タイプ 値\n" -#: src/readelf.c:1886 +#: src/readelf.c:1921 #, fuzzy #| msgid "cannot get string section data: %s" msgid "cannot get string table by using dynamic segment" msgstr "文字列セクションデータを取得できません: %s" -#: src/readelf.c:1925 +#: src/readelf.c:1960 #, c-format msgid "Shared library: [%s]\n" msgstr "共用ライブラリー: [%s]\n" -#: src/readelf.c:1929 +#: src/readelf.c:1964 #, c-format msgid "Library soname: [%s]\n" msgstr "ライブラリー so 名: [%s]\n" -#: src/readelf.c:1933 +#: src/readelf.c:1968 #, c-format msgid "Library rpath: [%s]\n" msgstr "ライブラリー rパス: [%s]\n" -#: src/readelf.c:1937 +#: src/readelf.c:1972 #, c-format msgid "Library runpath: [%s]\n" msgstr "ライブラリー run パス: [%s]\n" -#: src/readelf.c:1956 +#: src/readelf.c:1993 #, c-format msgid "% (bytes)\n" msgstr "% (バイト)\n" -#: src/readelf.c:2070 src/readelf.c:2259 +#: src/readelf.c:2109 src/readelf.c:2298 #, c-format msgid "" "\n" @@ -4624,7 +4637,7 @@ msgstr "" "\n" "オフセット %#0 に不当なシンボルテーブル\n" -#: src/readelf.c:2087 src/readelf.c:2276 +#: src/readelf.c:2126 src/readelf.c:2315 #, c-format msgid "" "\n" @@ -4645,7 +4658,8 @@ 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:2102 src/readelf.c:2291 +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 #, c-format msgid "" "\n" @@ -4658,29 +4672,39 @@ msgstr[0] "" "オフセット %3$#0 のリロケーションセクション [%1$2u] '%2$s' には %4$d " "個の項目があります:\n" -#: src/readelf.c:2112 +#: src/readelf.c:2151 msgid " Offset Type Value Name\n" msgstr " オフセット タイプ 値 名前\n" -#: src/readelf.c:2114 +#: src/readelf.c:2153 msgid " Offset Type Value Name\n" msgstr " オフセット タイプ 値 名前\n" -#: src/readelf.c:2167 src/readelf.c:2178 src/readelf.c:2191 src/readelf.c:2212 -#: src/readelf.c:2224 src/readelf.c:2357 src/readelf.c:2369 src/readelf.c:2383 -#: src/readelf.c:2405 src/readelf.c:2418 +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 msgid "" msgstr "<不当なRELOC>" -#: src/readelf.c:2301 +#: src/readelf.c:2340 msgid " Offset Type Value Addend Name\n" msgstr " オフセット タイプ 値 付加名\n" -#: src/readelf.c:2303 +#: src/readelf.c:2342 msgid " Offset Type Value Addend Name\n" msgstr " オフセット タイプ 値 付加名\n" -#: src/readelf.c:2540 +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "不正な動的シンボル" + +#: src/readelf.c:2868 #, c-format msgid "" "\n" @@ -4692,39 +4716,33 @@ msgstr[0] "" "\n" "シンボルテーブル [%2u] '%s' には %u 個の項目があります:\n" -#: src/readelf.c:2545 +#: src/readelf.c:2873 #, 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:2553 +#: src/readelf.c:2881 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " 数 : 値 大き タイプ Bind Vis Ndx 名前\n" -#: src/readelf.c:2555 +#: src/readelf.c:2883 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " 数 : 値 大き タイプ Bind Vis Ndx 名前\n" -#: src/readelf.c:2575 -#, c-format -msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" - -#: src/readelf.c:2668 -#, c-format -msgid "bad dynamic symbol" -msgstr "不正な動的シンボル" +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "" -#: src/readelf.c:2753 +#: src/readelf.c:3102 msgid "none" msgstr "なし" -#: src/readelf.c:2770 +#: src/readelf.c:3119 msgid "| " msgstr "| <不明>" -#: src/readelf.c:2800 +#: src/readelf.c:3149 #, c-format msgid "" "\n" @@ -4740,17 +4758,17 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:2821 +#: src/readelf.c:3170 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: バージョン: %hu ファイル: %s 数: %hu\n" -#: src/readelf.c:2834 +#: src/readelf.c:3183 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: 名前: %s フラグ: %s バージョン: %hu\n" -#: src/readelf.c:2876 +#: src/readelf.c:3225 #, c-format msgid "" "\n" @@ -4766,18 +4784,18 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:2904 +#: src/readelf.c:3253 #, 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:2919 +#: src/readelf.c:3268 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: 親 %d: %s\n" #. Print the header. -#: src/readelf.c:3179 +#: src/readelf.c:3528 #, c-format msgid "" "\n" @@ -4793,15 +4811,15 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'" -#: src/readelf.c:3207 +#: src/readelf.c:3556 msgid " 0 *local* " msgstr " 0 *ローカル* " -#: src/readelf.c:3212 +#: src/readelf.c:3561 msgid " 1 *global* " msgstr " 1 *グローバル* " -#: src/readelf.c:3254 +#: src/readelf.c:3603 #, c-format msgid "" "\n" @@ -4819,22 +4837,22 @@ msgstr[0] "" " アドレス: %#0* オフセット: %#08 セクションへのリンク: " "[%2u] '%s'\n" -#: src/readelf.c:3276 +#: src/readelf.c:3625 #, fuzzy, no-c-format msgid " Length Number % of total Coverage\n" msgstr " 長さ 数 全体の% 範囲 \n" -#: src/readelf.c:3278 +#: src/readelf.c:3627 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3285 +#: src/readelf.c:3634 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3298 +#: src/readelf.c:3647 #, fuzzy, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -4843,37 +4861,37 @@ msgstr "" " テストの平均数: 検索成功: %f\n" " 検索失敗: %f\n" -#: src/readelf.c:3316 src/readelf.c:3380 src/readelf.c:3446 +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 #, c-format msgid "cannot get data for section %d: %s" msgstr "セクションからデータを得られません %d: %s" -#: src/readelf.c:3324 +#: src/readelf.c:3673 #, fuzzy, c-format msgid "invalid data in sysv.hash section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3353 +#: src/readelf.c:3702 #, fuzzy, c-format msgid "invalid chain in sysv.hash section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3388 +#: src/readelf.c:3737 #, fuzzy, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3419 +#: src/readelf.c:3768 #, fuzzy, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3455 +#: src/readelf.c:3804 #, fuzzy, c-format msgid "invalid data in gnu.hash section %d" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:3521 +#: src/readelf.c:3870 #, c-format msgid "" " Symbol Bias: %u\n" @@ -4883,7 +4901,7 @@ msgstr "" " ビットマスクの大きさ: %zu バイト %%% ビット設定 第2ハッシュシフ" "ト: %u\n" -#: src/readelf.c:3606 +#: src/readelf.c:3955 #, c-format msgid "" "\n" @@ -4896,7 +4914,7 @@ msgstr[0] "" "オフセット %3$#0 のライブラリー一覧セクション [%1$2zu] '%2$s' には " "%4$d 個の項目があります:\n" -#: src/readelf.c:3620 +#: src/readelf.c:3969 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -4904,7 +4922,7 @@ msgstr "" " ライブラリー タイムスタンプ チェックサム バー" "ジョン フラグ" -#: src/readelf.c:3680 +#: src/readelf.c:4029 #, c-format msgid "" "\n" @@ -4915,101 +4933,107 @@ msgstr "" "オフセット %4$#0 の %3$ バイトのオブジェクト属性セクション " "[%1$2zu] '%2$s':\n" -#: src/readelf.c:3697 +#: src/readelf.c:4046 msgid " Owner Size\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:3721 +#: src/readelf.c:4070 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3760 +#: src/readelf.c:4109 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3765 +#: src/readelf.c:4114 #, c-format msgid " File: %11\n" msgstr " ファイル: %11\n" -#: src/readelf.c:3814 +#: src/readelf.c:4164 #, c-format msgid " %s: %, %s\n" msgstr " %s: %、%s\n" -#: src/readelf.c:3817 +#: src/readelf.c:4167 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3820 +#: src/readelf.c:4170 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3830 +#: src/readelf.c:4180 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3833 +#: src/readelf.c:4183 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3903 +#: src/readelf.c:4221 +#, fuzzy +#| msgid "couldn't get shdr for group section: %s" +msgid "Couldn't get data from section" +msgstr "グループセクションに対する shdr を取得できませんでした: %s" + +#: src/readelf.c:4286 msgid "sprintf failure" msgstr "" -#: src/readelf.c:4387 +#: src/readelf.c:4770 msgid "empty block" msgstr "空ブロック" -#: src/readelf.c:4390 +#: src/readelf.c:4773 #, c-format msgid "%zu byte block:" msgstr "%zu バイトのブロック:" -#: src/readelf.c:4868 +#: src/readelf.c:5251 #, fuzzy, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%4] %s \n" -#: src/readelf.c:5028 +#: src/readelf.c:5423 #, c-format msgid "%s %# used with different address sizes" msgstr "" -#: src/readelf.c:5035 +#: src/readelf.c:5430 #, c-format msgid "%s %# used with different offset sizes" msgstr "" -#: src/readelf.c:5042 +#: src/readelf.c:5437 #, c-format msgid "%s %# used with different base addresses" msgstr "" -#: src/readelf.c:5049 +#: src/readelf.c:5444 #, c-format msgid "%s %# used with different attribute %s and %s" msgstr "" -#: src/readelf.c:5149 +#: src/readelf.c:5544 #, c-format msgid " [%6tx] \n" msgstr "" -#: src/readelf.c:5157 +#: src/readelf.c:5552 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr "" -#: src/readelf.c:5260 +#: src/readelf.c:5658 #, c-format msgid "" "\n" @@ -5020,7 +5044,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " [ コード]\n" -#: src/readelf.c:5268 +#: src/readelf.c:5666 #, c-format msgid "" "\n" @@ -5029,20 +5053,20 @@ msgstr "" "\n" "オフセット % の略語セクション:\n" -#: src/readelf.c:5281 +#: src/readelf.c:5679 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** 略語を読んでいる間にエラー: %s\n" -#: src/readelf.c:5297 +#: src/readelf.c:5695 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] オフセット: %、子: %s、タグ: %s\n" -#: src/readelf.c:5330 src/readelf.c:5639 src/readelf.c:5806 src/readelf.c:6191 -#: src/readelf.c:6807 src/readelf.c:8562 src/readelf.c:9308 src/readelf.c:9791 -#: src/readelf.c:10042 src/readelf.c:10208 src/readelf.c:10595 -#: src/readelf.c:10655 +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 #, c-format msgid "" "\n" @@ -5051,52 +5075,47 @@ msgstr "" "\n" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:5343 -#, fuzzy, c-format -msgid "cannot get .debug_addr section data: %s" -msgstr "セクションデータを割り当てられません: %s" - -#: src/readelf.c:5443 src/readelf.c:5467 src/readelf.c:5851 src/readelf.c:9353 +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5445 src/readelf.c:5482 src/readelf.c:5864 src/readelf.c:9366 +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:5446 src/readelf.c:5491 src/readelf.c:5873 src/readelf.c:9375 +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 #, fuzzy, c-format msgid " Address size: %8\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5448 src/readelf.c:5501 src/readelf.c:5883 src/readelf.c:9385 +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 #, fuzzy, c-format msgid " Segment size: %8\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:5486 src/readelf.c:5868 src/readelf.c:9370 src/readelf.c:10787 +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 #, fuzzy, c-format msgid "Unknown version" msgstr "不明なバージョン" -#: src/readelf.c:5496 src/readelf.c:5709 src/readelf.c:5878 src/readelf.c:9380 +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 #, fuzzy, c-format msgid "unsupported address size" msgstr "アドレス値ではありません" -#: src/readelf.c:5507 src/readelf.c:5720 src/readelf.c:5888 src/readelf.c:9390 +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 #, c-format msgid "unsupported segment size" msgstr "" -#: src/readelf.c:5560 src/readelf.c:5634 +#: src/readelf.c:5952 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr ".debug_aragnes の内容を得られません: %s" -#: src/readelf.c:5575 +#: src/readelf.c:5967 #, c-format msgid "" "\n" @@ -5109,19 +5128,19 @@ msgstr[0] "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:5606 +#: src/readelf.c:5998 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5608 +#: src/readelf.c:6000 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" msgstr "" " [%*zu] 開始: %0#*、長さ: %5、CU DIE オフセット: %6\n" -#: src/readelf.c:5652 src/readelf.c:8589 +#: src/readelf.c:6038 src/readelf.c:8981 #, fuzzy, c-format msgid "" "\n" @@ -5130,152 +5149,142 @@ msgstr "" "\n" "オフセット %Zu のテーブル:\n" -#: src/readelf.c:5656 src/readelf.c:5832 src/readelf.c:6831 src/readelf.c:8600 -#: src/readelf.c:9334 +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "セクション [%zu] '%s' の不当なデータ" -#: src/readelf.c:5672 +#: src/readelf.c:6058 #, fuzzy, c-format msgid "" "\n" " Length: %6\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5684 +#: src/readelf.c:6070 #, fuzzy, c-format msgid " DWARF version: %6\n" msgstr " %s: %\n" -#: src/readelf.c:5688 +#: src/readelf.c:6074 #, c-format msgid "unsupported aranges version" msgstr "" -#: src/readelf.c:5699 +#: src/readelf.c:6085 #, fuzzy, c-format msgid " CU offset: %6\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5705 +#: src/readelf.c:6091 #, fuzzy, c-format msgid " Address size: %6\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5716 +#: src/readelf.c:6102 #, fuzzy, c-format msgid "" " Segment size: %6\n" "\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:5771 +#: src/readelf.c:6157 #, c-format msgid " %zu padding bytes\n" msgstr "" -#: src/readelf.c:5815 -#, fuzzy, c-format -msgid "cannot get .debug_rnglists content: %s" -msgstr ".degub_ranges の内容を得られません: %s" - -#: src/readelf.c:5838 src/readelf.c:9340 +#: src/readelf.c:6219 src/readelf.c:9727 #, fuzzy, c-format msgid "" "Table at Offset 0x%:\n" "\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:5893 src/readelf.c:9395 +#: src/readelf.c:6274 src/readelf.c:9782 #, fuzzy, c-format msgid " Offset entries: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:5909 src/readelf.c:9411 +#: src/readelf.c:6290 src/readelf.c:9798 #, c-format msgid " Unknown CU base: " msgstr "" -#: src/readelf.c:5911 src/readelf.c:9413 +#: src/readelf.c:6292 src/readelf.c:9800 #, c-format msgid " CU [%6] base: " msgstr "" -#: src/readelf.c:5917 src/readelf.c:9419 +#: src/readelf.c:6298 src/readelf.c:9806 #, c-format msgid " Not associated with a CU.\n" msgstr "" -#: src/readelf.c:5928 src/readelf.c:9430 +#: src/readelf.c:6309 src/readelf.c:9817 #, c-format msgid "too many offset entries for unit length" msgstr "" -#: src/readelf.c:5932 src/readelf.c:9434 +#: src/readelf.c:6313 src/readelf.c:9821 #, fuzzy, c-format msgid " Offsets starting at 0x%:\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:5984 +#: src/readelf.c:6365 #, fuzzy, c-format msgid "invalid range list data" msgstr "不当なデータ" -#: src/readelf.c:6169 src/readelf.c:9769 +#: src/readelf.c:6550 src/readelf.c:10156 #, c-format msgid "" " %zu padding bytes\n" "\n" msgstr "" -#: src/readelf.c:6186 -#, c-format -msgid "cannot get .debug_ranges content: %s" -msgstr ".degub_ranges の内容を得られません: %s" - -#: src/readelf.c:6222 src/readelf.c:9824 +#: src/readelf.c:6598 src/readelf.c:10205 #, c-format msgid "" "\n" " Unknown CU base: " msgstr "" -#: src/readelf.c:6224 src/readelf.c:9826 +#: src/readelf.c:6600 src/readelf.c:10207 #, c-format msgid "" "\n" " CU [%6] base: " msgstr "" -#: src/readelf.c:6233 src/readelf.c:9852 src/readelf.c:9878 +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:6258 src/readelf.c:9962 +#: src/readelf.c:6634 src/readelf.c:10343 #, fuzzy msgid "base address" msgstr "アドレスを %s に設定する\n" -#: src/readelf.c:6268 src/readelf.c:9972 +#: src/readelf.c:6644 src/readelf.c:10353 #, fuzzy, c-format msgid " [%6tx] empty list\n" msgstr "" "\n" " [%6tx] ゼロ終端\n" -#: src/readelf.c:6528 +#: src/readelf.c:6908 #, fuzzy msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:6785 +#: src/readelf.c:7165 #, fuzzy, c-format msgid "cannot get ELF: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:6803 +#: src/readelf.c:7189 #, c-format msgid "" "\n" @@ -5284,7 +5293,7 @@ msgstr "" "\n" "オフセット %3$# の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:6853 +#: src/readelf.c:7239 #, c-format msgid "" "\n" @@ -5293,65 +5302,65 @@ msgstr "" "\n" " [%6tx] ゼロ終端\n" -#: src/readelf.c:6954 src/readelf.c:7108 +#: src/readelf.c:7343 src/readelf.c:7497 #, fuzzy, c-format msgid "invalid augmentation length" msgstr "不当な拡大エンコード" -#: src/readelf.c:6969 +#: src/readelf.c:7358 msgid "FDE address encoding: " msgstr "FDE アドレスエンコード" -#: src/readelf.c:6975 +#: src/readelf.c:7364 msgid "LSDA pointer encoding: " msgstr "LSDA ポインターエンコード:" -#: src/readelf.c:7085 +#: src/readelf.c:7474 #, c-format msgid " (offset: %#)" msgstr " (オフセット: %#)" -#: src/readelf.c:7092 +#: src/readelf.c:7481 #, c-format msgid " (end offset: %#)" msgstr " (終了オフセット: %#)" -#: src/readelf.c:7129 +#: src/readelf.c:7518 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sLSDA ポインター: %#\n" -#: src/readelf.c:7214 +#: src/readelf.c:7603 #, fuzzy, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "属性コードを得られません: %s" -#: src/readelf.c:7224 +#: src/readelf.c:7613 #, fuzzy, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "属性様式を得られません: %s" -#: src/readelf.c:7246 +#: src/readelf.c:7635 #, fuzzy, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "属性値を得られません: %s" -#: src/readelf.c:7576 +#: src/readelf.c:7965 #, fuzzy, c-format msgid "invalid file (%): %s" msgstr "不当なファイル" -#: src/readelf.c:7580 +#: src/readelf.c:7969 #, fuzzy, c-format msgid "no srcfiles for CU [%]" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:7584 +#: src/readelf.c:7973 #, fuzzy, c-format msgid "couldn't get DWARF CU: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:7899 +#: src/readelf.c:8295 #, c-format msgid "" "\n" @@ -5362,12 +5371,12 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" " [オフセット]\n" -#: src/readelf.c:7949 +#: src/readelf.c:8345 #, fuzzy, c-format msgid "cannot get next unit: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:7969 +#: src/readelf.c:8365 #, fuzzy, c-format msgid "" " Type unit at offset %:\n" @@ -5379,7 +5388,7 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:7981 +#: src/readelf.c:8377 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5390,39 +5399,39 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:7991 src/readelf.c:8152 +#: src/readelf.c:8387 src/readelf.c:8548 #, c-format msgid " Unit type: %s (%)" msgstr "" -#: src/readelf.c:8018 +#: src/readelf.c:8414 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "" -#: src/readelf.c:8047 +#: src/readelf.c:8443 #, c-format msgid "cannot get DIE offset: %s" msgstr "DIE オフセットを得られません: %s" -#: src/readelf.c:8056 +#: src/readelf.c:8452 #, fuzzy, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "セクション '%2$s' 中のオフセット %1$ の DIE のタグを得られません: " "%3$s" -#: src/readelf.c:8092 +#: src/readelf.c:8488 #, c-format msgid "cannot get next DIE: %s\n" msgstr "次の DIE を得られません: %s\n" -#: src/readelf.c:8100 +#: src/readelf.c:8496 #, c-format msgid "cannot get next DIE: %s" msgstr "次の DIE を得られません: %s" -#: src/readelf.c:8144 +#: src/readelf.c:8540 #, fuzzy, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5433,7 +5442,7 @@ msgstr "" " バージョン: %2$、略語セクションオフセット: %3$、アドレスの大" "きさ: %4$、オフセットの大きさ: %5$\n" -#: src/readelf.c:8196 +#: src/readelf.c:8592 #, fuzzy, c-format msgid "" "\n" @@ -5443,18 +5452,13 @@ msgstr "" "\n" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" -#: src/readelf.c:8528 +#: src/readelf.c:8924 #, fuzzy, c-format msgid "unknown form: %s" msgstr "不明な様式 %" -#: src/readelf.c:8576 -#, c-format -msgid "cannot get line data section data: %s" -msgstr "ラインデータセクションデータを得られません: %s" - #. Print what we got so far. -#: src/readelf.c:8680 +#: src/readelf.c:9072 #, fuzzy, c-format msgid "" "\n" @@ -5484,33 +5488,33 @@ msgstr "" "\n" "命令コード:\n" -#: src/readelf.c:8702 +#: src/readelf.c:9094 #, c-format msgid "cannot handle .debug_line version: %u\n" msgstr ".debug_line バージョンを扱えません: %u\n" -#: src/readelf.c:8710 +#: src/readelf.c:9102 #, c-format msgid "cannot handle address size: %u\n" msgstr "アドレスサイズを扱えません: %u\n" -#: src/readelf.c:8718 +#: src/readelf.c:9110 #, c-format msgid "cannot handle segment selector size: %u\n" msgstr "セグメントセレクタサイズを扱えません: %u\n" -#: src/readelf.c:8728 +#: src/readelf.c:9120 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ" -#: src/readelf.c:8743 +#: src/readelf.c:9135 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" msgstr[0] " [%*] %hhu パラメーター\n" -#: src/readelf.c:8754 +#: src/readelf.c:9146 msgid "" "\n" "Directory table:" @@ -5518,12 +5522,12 @@ msgstr "" "\n" "ディレクトリーテーブル:" -#: src/readelf.c:8760 src/readelf.c:8837 +#: src/readelf.c:9152 src/readelf.c:9229 #, fuzzy, c-format msgid " [" msgstr " %s: %s\n" -#: src/readelf.c:8831 +#: src/readelf.c:9223 #, fuzzy msgid "" "\n" @@ -5532,7 +5536,7 @@ msgstr "" "\n" " 呼出しサイトテーブル:" -#: src/readelf.c:8892 +#: src/readelf.c:9284 #, fuzzy msgid " Entry Dir Time Size Name" msgstr "" @@ -5540,7 +5544,7 @@ msgstr "" "ファイル名テーブル:\n" " Entry Dir 時刻 大きさ 名前" -#: src/readelf.c:8938 +#: src/readelf.c:9330 #, fuzzy msgid "" "\n" @@ -5549,7 +5553,7 @@ msgstr "" "\n" "行 番号 文:" -#: src/readelf.c:8942 +#: src/readelf.c:9334 msgid "" "\n" "Line number statements:" @@ -5557,129 +5561,129 @@ msgstr "" "\n" "行 番号 文:" -#: src/readelf.c:8957 +#: src/readelf.c:9349 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "" -#: src/readelf.c:8991 +#: src/readelf.c:9383 #, fuzzy, c-format msgid " special opcode %u: address+%u = " msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n" -#: src/readelf.c:8995 +#: src/readelf.c:9387 #, fuzzy, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n" -#: src/readelf.c:8998 +#: src/readelf.c:9390 #, c-format msgid ", line%+d = %zu\n" msgstr "" -#: src/readelf.c:9016 +#: src/readelf.c:9408 #, c-format msgid " extended opcode %u: " msgstr " 拡張命令コード %u: " -#: src/readelf.c:9021 +#: src/readelf.c:9413 #, fuzzy msgid " end of sequence" msgstr "列の終わり" -#: src/readelf.c:9039 +#: src/readelf.c:9431 #, fuzzy, c-format msgid " set address to " msgstr "アドレスを %s に設定する\n" -#: src/readelf.c:9067 +#: src/readelf.c:9459 #, fuzzy, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" "新ファイルを定義する: dir=%u、mtime=%、長さh=%、名前=%s\n" -#: src/readelf.c:9081 +#: src/readelf.c:9473 #, fuzzy, c-format msgid " set discriminator to %u\n" msgstr "カラムを % に設定する\n" -#: src/readelf.c:9108 +#: src/readelf.c:9500 #, c-format msgid " set inlined context %u, function name %s (0x%x)\n" msgstr "" -#: src/readelf.c:9132 +#: src/readelf.c:9524 #, fuzzy, c-format #| msgid "Also show function names" msgid " set function name %s (0x%x)\n" msgstr "関数名も表示" #. Unknown, ignore it. -#: src/readelf.c:9139 +#: src/readelf.c:9531 msgid " unknown opcode" msgstr "不明なオペコード" #. Takes no argument. -#: src/readelf.c:9151 +#: src/readelf.c:9543 msgid " copy" msgstr "複写" -#: src/readelf.c:9162 +#: src/readelf.c:9554 #, fuzzy, c-format msgid " advance address by %u to " msgstr "アドレスを %u だけ進めて %s にする\n" -#: src/readelf.c:9166 src/readelf.c:9227 +#: src/readelf.c:9558 src/readelf.c:9619 #, c-format msgid ", op_index to %u" msgstr "" -#: src/readelf.c:9178 +#: src/readelf.c:9570 #, c-format msgid " advance line by constant %d to %\n" msgstr "行を定数 %d だけ進めて % にする\n" -#: src/readelf.c:9188 +#: src/readelf.c:9580 #, c-format msgid " set file to %\n" msgstr " ファイルを % に設定する\n" -#: src/readelf.c:9199 +#: src/readelf.c:9591 #, c-format msgid " set column to %\n" msgstr "カラムを % に設定する\n" -#: src/readelf.c:9206 +#: src/readelf.c:9598 #, c-format msgid " set '%s' to %\n" msgstr " '%s' を % に設定する\n" #. Takes no argument. -#: src/readelf.c:9212 +#: src/readelf.c:9604 msgid " set basic block flag" msgstr "基本ブロックフラグを設定する" -#: src/readelf.c:9223 +#: src/readelf.c:9615 #, fuzzy, c-format msgid " advance address by constant %u to " msgstr "アドレスを定数 %u だけ済めて %s にする\n" -#: src/readelf.c:9243 +#: src/readelf.c:9635 #, fuzzy, c-format msgid " advance address by fixed value %u to \n" msgstr "アドレスを固定値 %u だけ進めて %s にする\n" #. Takes no argument. -#: src/readelf.c:9253 +#: src/readelf.c:9645 msgid " set prologue end flag" msgstr "プロローグ終了フラグを設定する" #. Takes no argument. -#: src/readelf.c:9258 +#: src/readelf.c:9650 msgid " set epilogue begin flag" msgstr "エピローグ開始フラグを設定する" -#: src/readelf.c:9268 +#: src/readelf.c:9660 #, fuzzy, c-format msgid " set isa to %u\n" msgstr " ファイルを % に設定する\n" @@ -5687,103 +5691,88 @@ msgstr " ファイルを % に設定する\n" #. This is a new opcode the generator but not we know about. #. Read the parameters associated with it but then discard #. everything. Read all the parameters for this opcode. -#: src/readelf.c:9277 +#: src/readelf.c:9669 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" msgstr[0] " % 個のパラメーターのある不明な命令コード:" -#: src/readelf.c:9317 -#, c-format -msgid "cannot get .debug_loclists content: %s" -msgstr ".debug_loclists の内容を取得できません: %s" - -#: src/readelf.c:9483 +#: src/readelf.c:9870 #, fuzzy, c-format msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:9523 +#: src/readelf.c:9910 #, fuzzy, c-format msgid "invalid loclists data" msgstr "不当なデータ" -#: src/readelf.c:9786 -#, c-format -msgid "cannot get .debug_loc content: %s" -msgstr ".debug_loc の内容を得られません: %s" - -#: src/readelf.c:9999 src/readelf.c:11043 +#: src/readelf.c:10380 src/readelf.c:11425 #, fuzzy msgid " \n" msgstr " [%6tx] <不当なデータ>\n" -#: src/readelf.c:10054 src/readelf.c:10217 -#, c-format -msgid "cannot get macro information section data: %s" -msgstr "マクロ情報セクションのデータを得られません: %s" - -#: src/readelf.c:10134 +#: src/readelf.c:10511 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** 最後のセクションの終端していない文字列" -#: src/readelf.c:10157 +#: src/readelf.c:10534 #, fuzzy, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** 最後のセクションの終端していない文字列" -#: src/readelf.c:10258 +#: src/readelf.c:10629 #, fuzzy, c-format msgid " Offset: 0x%\n" msgstr " 所有者 大きさ\n" -#: src/readelf.c:10270 +#: src/readelf.c:10641 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:10276 src/readelf.c:11163 +#: src/readelf.c:10647 src/readelf.c:11546 #, c-format msgid " unknown version, cannot parse section\n" msgstr "" -#: src/readelf.c:10283 +#: src/readelf.c:10654 #, fuzzy, c-format msgid " Flag: 0x%" msgstr " 入口点アドレス : %#\n" -#: src/readelf.c:10312 +#: src/readelf.c:10683 #, fuzzy, c-format msgid " Offset length: %\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10320 +#: src/readelf.c:10691 #, fuzzy, c-format msgid " .debug_line offset: 0x%\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:10345 +#: src/readelf.c:10716 #, fuzzy, c-format msgid " extension opcode table, % items:\n" msgstr " % 個のパラメーターのある不明な命令コード:" -#: src/readelf.c:10352 +#: src/readelf.c:10723 #, c-format msgid " [%]" msgstr "" -#: src/readelf.c:10364 +#: src/readelf.c:10735 #, fuzzy, c-format msgid " % arguments:" msgstr " [%*] %hhu パラメーター\n" -#: src/readelf.c:10379 +#: src/readelf.c:10750 #, c-format msgid " no arguments." msgstr "" -#: src/readelf.c:10580 +#: src/readelf.c:10951 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" @@ -5791,7 +5780,7 @@ msgstr "" # # "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s':\n" # # " %4$*s 文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い -#: src/readelf.c:10624 +#: src/readelf.c:11006 #, fuzzy, c-format msgid "" "\n" @@ -5803,42 +5792,37 @@ msgstr "" " %4$*s 文字列\n" #. TRANS: the debugstr| prefix makes the string unique. -#: src/readelf.c:10629 +#: src/readelf.c:11011 msgctxt "debugstr" msgid "Offset" msgstr "" -#: src/readelf.c:10639 +#: src/readelf.c:11021 #, fuzzy, c-format msgid " *** error, missing string terminator\n" msgstr " *** 文字列の読込み中にエラー: %s\n" -#: src/readelf.c:10668 -#, fuzzy, c-format -msgid "cannot get .debug_str_offsets section data: %s" -msgstr ".degub_ranges の内容を得られません: %s" - -#: src/readelf.c:10767 +#: src/readelf.c:11143 #, fuzzy, c-format msgid " Length: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10769 +#: src/readelf.c:11145 #, fuzzy, c-format msgid " Offset size: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10783 +#: src/readelf.c:11159 #, fuzzy, c-format msgid " DWARF version: %8\n" msgstr " %s: %\n" -#: src/readelf.c:10792 +#: src/readelf.c:11168 #, fuzzy, c-format msgid " Padding: %8\n" msgstr " (オフセット: %#)" -#: src/readelf.c:10846 +#: src/readelf.c:11222 #, c-format msgid "" "\n" @@ -5847,7 +5831,7 @@ msgstr "" "\n" "呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10948 +#: src/readelf.c:11324 #, c-format msgid "" "\n" @@ -5856,22 +5840,22 @@ msgstr "" "\n" "例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10971 +#: src/readelf.c:11347 #, c-format msgid " LPStart encoding: %#x " msgstr " LPStart コード化: %#x " -#: src/readelf.c:10983 +#: src/readelf.c:11359 #, c-format msgid " TType encoding: %#x " msgstr "TType コード化: %#x " -#: src/readelf.c:10998 +#: src/readelf.c:11376 #, c-format msgid " Call site encoding: %#x " msgstr "呼出しサイトコード化: %#x " -#: src/readelf.c:11011 +#: src/readelf.c:11391 msgid "" "\n" " Call site table:" @@ -5879,7 +5863,7 @@ msgstr "" "\n" " 呼出しサイトテーブル:" -#: src/readelf.c:11025 +#: src/readelf.c:11407 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -5892,12 +5876,12 @@ msgstr "" " 離着陸場: %#\n" " 行動: %u\n" -#: src/readelf.c:11098 +#: src/readelf.c:11480 #, c-format msgid "invalid TType encoding" msgstr "不当な TType コード化" -#: src/readelf.c:11125 +#: src/readelf.c:11507 #, fuzzy, c-format msgid "" "\n" @@ -5907,37 +5891,42 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:11154 +#: src/readelf.c:11536 #, fuzzy, c-format msgid " Version: %\n" msgstr " %s: %\n" -#: src/readelf.c:11172 +#: src/readelf.c:11555 #, fuzzy, c-format msgid " CU offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:11179 +#: src/readelf.c:11562 #, fuzzy, c-format msgid " TU offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:11186 +#: src/readelf.c:11569 #, fuzzy, c-format msgid " address offset: %#\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:11193 +#: src/readelf.c:11576 #, fuzzy, c-format msgid " symbol offset: %#\n" msgstr " (オフセット: %#)" -#: src/readelf.c:11200 +#: src/readelf.c:11586 +#, fuzzy, c-format +msgid " shortcut offset: %#\n" +msgstr " (終了オフセット: %#)" + +#: src/readelf.c:11594 #, fuzzy, c-format msgid " constant offset: %#\n" msgstr " (終了オフセット: %#)" -#: src/readelf.c:11214 +#: src/readelf.c:11608 #, fuzzy, c-format msgid "" "\n" @@ -5947,7 +5936,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:11239 +#: src/readelf.c:11633 #, fuzzy, c-format msgid "" "\n" @@ -5957,7 +5946,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:11268 +#: src/readelf.c:11662 #, fuzzy, c-format msgid "" "\n" @@ -5967,7 +5956,7 @@ msgstr "" "オフセット %3$# の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項" "目があります:\n" -#: src/readelf.c:11300 +#: src/readelf.c:11705 #, fuzzy, c-format msgid "" "\n" @@ -5976,18 +5965,37 @@ msgstr "" "\n" "オフセット %#0 に不当なシンボルテーブル\n" -#: src/readelf.c:11438 +#: src/readelf.c:11790 +#, fuzzy, c-format +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +"オフセット %#0 に不当なシンボルテーブル\n" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "" + +#: src/readelf.c:11886 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "デバッグ内容記述子を得られません: %s" -#: src/readelf.c:11804 src/readelf.c:12431 src/readelf.c:12541 -#: src/readelf.c:12598 +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 #, c-format msgid "cannot convert core note data: %s" msgstr "コアノートデータの変換ができません: %s" -#: src/readelf.c:12168 +#: src/readelf.c:12616 #, c-format msgid "" "\n" @@ -5996,21 +6004,21 @@ msgstr "" "\n" "%*s... < %u 回の繰返し> ..." -#: src/readelf.c:12677 +#: src/readelf.c:13118 msgid " Owner Data size Type\n" msgstr " 所有者 データ大きさタイプ\n" -#: src/readelf.c:12705 +#: src/readelf.c:13146 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12757 +#: src/readelf.c:13198 #, c-format msgid "cannot get content of note: %s" msgstr "ノートセクションの内容を取得できません: %s" -#: src/readelf.c:12790 +#: src/readelf.c:13231 #, c-format msgid "" "\n" @@ -6020,7 +6028,7 @@ msgstr "" "オフセット %4$#0 の %3$ バイトのノートセクション [%1$2zu] " "'%2$s':\n" -#: src/readelf.c:12813 +#: src/readelf.c:13254 #, c-format msgid "" "\n" @@ -6029,7 +6037,7 @@ msgstr "" "\n" "オフセット %2$#0 の %1$ バイトのノートセグメント:\n" -#: src/readelf.c:12860 +#: src/readelf.c:13301 #, fuzzy, c-format msgid "" "\n" @@ -6038,12 +6046,12 @@ msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/readelf.c:12887 src/readelf.c:12938 +#: src/readelf.c:13328 src/readelf.c:13379 #, fuzzy, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "セクション [%Zu] '%s' からデータが得られません: %s" -#: src/readelf.c:12892 +#: src/readelf.c:13333 #, fuzzy, c-format msgid "" "\n" @@ -6053,7 +6061,7 @@ msgstr "" "オフセット %4$#0 のセクション [%1$Zu] '%2$s' の16進ダン" "プ、%3$ バイト:\n" -#: src/readelf.c:12897 +#: src/readelf.c:13338 #, fuzzy, c-format msgid "" "\n" @@ -6064,7 +6072,7 @@ msgstr "" "オフセット %4$#0 のセクション [%1$Zu] '%2$s' の16進ダン" "プ、%3$ バイト:\n" -#: src/readelf.c:12911 +#: src/readelf.c:13352 #, fuzzy, c-format msgid "" "\n" @@ -6073,7 +6081,7 @@ msgstr "" "\n" "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n" -#: src/readelf.c:12943 +#: src/readelf.c:13384 #, fuzzy, c-format msgid "" "\n" @@ -6083,7 +6091,7 @@ msgstr "" "オフセット %4$#0 文字列セクション [%1$Zu] '%2$s' には %3$ バ" "イトあります:\n" -#: src/readelf.c:12948 +#: src/readelf.c:13389 #, fuzzy, c-format msgid "" "\n" @@ -6094,7 +6102,7 @@ msgstr "" "オフセット %4$#0 文字列セクション [%1$Zu] '%2$s' には %3$ バ" "イトあります:\n" -#: src/readelf.c:12996 +#: src/readelf.c:13437 #, c-format msgid "" "\n" @@ -6103,7 +6111,7 @@ msgstr "" "\n" "セクション [%lu] がありません" -#: src/readelf.c:13026 +#: src/readelf.c:13467 #, c-format msgid "" "\n" @@ -6112,12 +6120,12 @@ msgstr "" "\n" "セクション '%s' がありません" -#: src/readelf.c:13081 +#: src/readelf.c:13522 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "アーカイブのシンボル索引 '%s' を得られません: %s" -#: src/readelf.c:13084 +#: src/readelf.c:13525 #, c-format msgid "" "\n" @@ -6126,7 +6134,7 @@ msgstr "" "\n" "アーカイブ '%s' にはシンボル索引がありません\n" -#: src/readelf.c:13088 +#: src/readelf.c:13529 #, c-format msgid "" "\n" @@ -6135,12 +6143,12 @@ msgstr "" "\n" "アーカイブ '%s' の索引は %zu 個の項目を持ちます:\n" -#: src/readelf.c:13106 +#: src/readelf.c:13547 #, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "'%2$s' の オフセット %1$zu のメンバーを抽出できません: %3$s" -#: src/readelf.c:13111 +#: src/readelf.c:13552 #, c-format msgid "Archive member '%s' contains:\n" msgstr "アーカイブメンバー '%s' には以下があります:\n" @@ -6624,7 +6632,7 @@ msgstr "%s: ELF ヘッダーの更新中にエラー: %s" msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: shdrstrndx の取得中にエラー: %s" -#: src/strip.c:1712 src/strip.c:2553 +#: src/strip.c:1712 src/strip.c:2552 #, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: shdrstrndx の更新中にエラー: %s" @@ -6658,7 +6666,7 @@ msgstr "セクションヘッダー文字列テーブルを作成するメモリ msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" -#: src/strip.c:2469 src/strip.c:2577 +#: src/strip.c:2469 src/strip.c:2574 #, c-format msgid "while writing '%s': %s" msgstr "'%s' を書込み中: %s" @@ -6678,22 +6686,22 @@ msgstr "デバッグ情報のチェックサムを計算中" msgid "%s: error while creating ELF header: %s" msgstr "%s: ELF ヘッダーを生成している間にエラー: %s" -#: src/strip.c:2562 +#: src/strip.c:2560 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: ファイルを読込み中にエラー: %s" -#: src/strip.c:2602 src/strip.c:2622 +#: src/strip.c:2599 src/strip.c:2619 #, c-format msgid "while writing '%s'" msgstr "書き込み中 '%s'" -#: src/strip.c:2659 src/strip.c:2666 +#: src/strip.c:2656 src/strip.c:2663 #, c-format msgid "error while finishing '%s': %s" msgstr "'%s' の終了中にエラー: %s" -#: src/strip.c:2683 src/strip.c:2759 +#: src/strip.c:2680 src/strip.c:2756 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "'%s' のアクセスと変更日付を設定できません" @@ -7142,7 +7150,7 @@ msgid "" "section PATH SECTION-NAME\n" msgstr "" -#: tests/backtrace.c:483 +#: tests/backtrace.c:491 msgid "Run executable" msgstr "" @@ -7154,6 +7162,43 @@ msgstr "関数名を さらに 表示" msgid "Show instances of inlined functions" msgstr "インライン関数の実体を表示" +#, c-format +#~ msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n" +#~ msgstr "" +#~ "セクション [%2d] '%s': セクション項目サイズが ElfXX_Rela と一致しません\n" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_addr section data: %s" +#~ msgstr "セクションデータを割り当てられません: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_rnglists content: %s" +#~ msgstr ".degub_ranges の内容を得られません: %s" + +#, c-format +#~ msgid "cannot get .debug_ranges content: %s" +#~ msgstr ".degub_ranges の内容を得られません: %s" + +#, c-format +#~ msgid "cannot get line data section data: %s" +#~ msgstr "ラインデータセクションデータを得られません: %s" + +#, c-format +#~ msgid "cannot get .debug_loclists content: %s" +#~ msgstr ".debug_loclists の内容を取得できません: %s" + +#, c-format +#~ msgid "cannot get .debug_loc content: %s" +#~ msgstr ".debug_loc の内容を得られません: %s" + +#, c-format +#~ msgid "cannot get macro information section data: %s" +#~ msgstr "マクロ情報セクションのデータを得られません: %s" + +#, fuzzy, c-format +#~ msgid "cannot get .debug_str_offsets section data: %s" +#~ msgstr ".degub_ranges の内容を得られません: %s" + #~ msgid "cannot allocate memory" #~ msgstr "メモリーを割り当てられません" diff --git a/po/pl.gmo b/po/pl.gmo new file mode 100644 index 0000000000000000000000000000000000000000..38949b8c6b43dac67295acd50f118299e918b977 Binary files /dev/null and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index b32ecc217187b80243b9a08132e5dd3bdb29addd..9f6e835f78765be0d422a927bfedb4a4341b567f 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: 2022-11-02 13:30+0100\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" "PO-Revision-Date: 2021-02-22 16:25+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" @@ -54,18 +54,18 @@ msgstr "" "BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI\n" "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n" -#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11754 +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 #: src/unstrip.c:311 #, c-format msgid "memory exhausted" msgstr "pamięć wyczerpana" -#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:51 +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 #: libelf/elf_error.c:59 msgid "no error" msgstr "brak błędu" -#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:53 +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 #: libelf/elf_error.c:90 msgid "out of memory" msgstr "brak pamięci" @@ -102,7 +102,7 @@ msgstr "błąd podczas wyprowadzania danych" msgid "no backend support available" msgstr "brak dostępnej obsługi zaplecza" -#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:52 +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 #: libelf/elf_error.c:62 msgid "unknown error" msgstr "nieznany błąd" @@ -117,7 +117,7 @@ msgstr "nieprawidłowy znak „%c” w %d. wierszu; zignorowano" msgid "invalid character '\\%o' at line %d; ignored" msgstr "nieprawidłowy znak „\\%o” w %d. wierszu; zignorowano" -#: libcpu/i386_parse.y:553 +#: libcpu/i386_parse.y:555 #, c-format msgid "while reading i386 CPU description: %s at line %d" msgstr "podczas odczytywania opisu procesora i386: %s w %d. wierszu" @@ -230,7 +230,7 @@ msgstr "nieprawidłowa wersja DWARF" msgid "invalid directory index" msgstr "nieprawidłowy indeks katalogu" -#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73 +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 msgid "address out of range" msgstr "adres jest spoza zakresu" @@ -258,7 +258,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:74 +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 msgid "no matching address range" msgstr "brak pasującego zakresu adresów" @@ -368,165 +368,165 @@ msgstr "Za mało pamięci" msgid "No modules recognized in core file" msgstr "Nie rozpoznano żadnych modułów w pliku core" -#: libdwfl/libdwflP.h:54 +#: libdwfl/libdwflP.h:50 msgid "See errno" msgstr "Proszę zobaczyć errno" -#: libdwfl/libdwflP.h:55 +#: libdwfl/libdwflP.h:51 msgid "See elf_errno" msgstr "Proszę zobaczyć elf_errno" -#: libdwfl/libdwflP.h:56 +#: libdwfl/libdwflP.h:52 msgid "See dwarf_errno" msgstr "Proszę zobaczyć dwarf_errno" -#: libdwfl/libdwflP.h:57 +#: libdwfl/libdwflP.h:53 msgid "See ebl_errno (XXX missing)" msgstr "Proszę zobaczyć ebl_errno (brak XXX)" -#: libdwfl/libdwflP.h:58 +#: libdwfl/libdwflP.h:54 msgid "gzip decompression failed" msgstr "dekompresja gzip się nie powiodła" -#: libdwfl/libdwflP.h:59 +#: libdwfl/libdwflP.h:55 msgid "bzip2 decompression failed" msgstr "dekompresja bzip2 się nie powiodła" -#: libdwfl/libdwflP.h:60 +#: libdwfl/libdwflP.h:56 msgid "LZMA decompression failed" msgstr "dekompresja LZMA się nie powiodła" -#: libdwfl/libdwflP.h:61 +#: libdwfl/libdwflP.h:57 msgid "zstd decompression failed" msgstr "dekompresja zstd się nie powiodła" -#: libdwfl/libdwflP.h:62 +#: libdwfl/libdwflP.h:58 msgid "no support library found for machine" msgstr "nie odnaleziono biblioteki obsługi dla komputera" -#: libdwfl/libdwflP.h:63 +#: libdwfl/libdwflP.h:59 msgid "Callbacks missing for ET_REL file" msgstr "Brak wywołań zwrotnych dla pliku ET_REL" -#: libdwfl/libdwflP.h:64 +#: libdwfl/libdwflP.h:60 msgid "Unsupported relocation type" msgstr "Nieobsługiwany typ relokacji" -#: libdwfl/libdwflP.h:65 +#: libdwfl/libdwflP.h:61 msgid "r_offset is bogus" msgstr "r_offset jest fałszywe" -#: libdwfl/libdwflP.h:66 libelf/elf_error.c:114 libelf/elf_error.c:174 +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 msgid "offset out of range" msgstr "offset spoza zakresu" -#: libdwfl/libdwflP.h:67 +#: libdwfl/libdwflP.h:63 msgid "relocation refers to undefined symbol" msgstr "relokacja odnosi się do nieokreślonego symbolu" -#: libdwfl/libdwflP.h:68 +#: libdwfl/libdwflP.h:64 msgid "Callback returned failure" msgstr "Wywołanie zwrotne zwróciło niepowodzenie" -#: libdwfl/libdwflP.h:69 +#: libdwfl/libdwflP.h:65 msgid "No DWARF information found" msgstr "Nie odnaleziono informacji DWARF" -#: libdwfl/libdwflP.h:70 +#: libdwfl/libdwflP.h:66 msgid "No symbol table found" msgstr "Nie odnaleziono tabeli symboli" -#: libdwfl/libdwflP.h:71 +#: libdwfl/libdwflP.h:67 msgid "No ELF program headers" msgstr "Brak nagłówków programu ELF" -#: libdwfl/libdwflP.h:72 +#: libdwfl/libdwflP.h:68 msgid "address range overlaps an existing module" msgstr "zakres adresów pokrywa się z istniejącym modułem" -#: libdwfl/libdwflP.h:75 +#: libdwfl/libdwflP.h:71 msgid "image truncated" msgstr "skrócono obraz" -#: libdwfl/libdwflP.h:76 +#: libdwfl/libdwflP.h:72 msgid "ELF file opened" msgstr "otwarto plik ELF" -#: libdwfl/libdwflP.h:77 +#: libdwfl/libdwflP.h:73 msgid "not a valid ELF file" msgstr "nie jest prawidłowym plikiem ELF" -#: libdwfl/libdwflP.h:78 +#: libdwfl/libdwflP.h:74 msgid "cannot handle DWARF type description" msgstr "nie można obsłużyć opisu typu DWARF" -#: libdwfl/libdwflP.h:79 +#: libdwfl/libdwflP.h:75 msgid "ELF file does not match build ID" msgstr "plik ELF nie ma pasującego identyfikatora kopii" -#: libdwfl/libdwflP.h:80 +#: libdwfl/libdwflP.h:76 msgid "corrupt .gnu.prelink_undo section data" msgstr "uszkodzone dane sekcji .gnu.prelink_undo" -#: libdwfl/libdwflP.h:81 +#: libdwfl/libdwflP.h:77 msgid "Internal error due to ebl" msgstr "Wewnętrzny błąd z powodu ebl" -#: libdwfl/libdwflP.h:82 +#: libdwfl/libdwflP.h:78 msgid "Missing data in core file" msgstr "Brak danych w pliku core" -#: libdwfl/libdwflP.h:83 +#: libdwfl/libdwflP.h:79 msgid "Invalid register" msgstr "Nieprawidłowy rejestr" -#: libdwfl/libdwflP.h:84 +#: libdwfl/libdwflP.h:80 #, fuzzy #| msgid "no reference value" msgid "Unknown register value" msgstr "brak wartości odwołania" -#: libdwfl/libdwflP.h:85 +#: libdwfl/libdwflP.h:81 msgid "Error reading process memory" msgstr "Błąd podczas odczytywania pamięci procesu" -#: libdwfl/libdwflP.h:86 +#: libdwfl/libdwflP.h:82 msgid "Couldn't find architecture of any ELF" msgstr "Nie można odnaleźć architektury żadnego ELF" -#: libdwfl/libdwflP.h:87 +#: libdwfl/libdwflP.h:83 msgid "Error parsing /proc filesystem" msgstr "Błąd podczas przetwarzania systemu plików /proc" -#: libdwfl/libdwflP.h:88 +#: libdwfl/libdwflP.h:84 msgid "Invalid DWARF" msgstr "Nieprawidłowy DWARF" -#: libdwfl/libdwflP.h:89 +#: libdwfl/libdwflP.h:85 msgid "Unsupported DWARF" msgstr "Nieobsługiwany DWARF" -#: libdwfl/libdwflP.h:90 +#: libdwfl/libdwflP.h:86 msgid "Unable to find more threads" msgstr "Nie można odnaleźć więcej wątków" -#: libdwfl/libdwflP.h:91 +#: libdwfl/libdwflP.h:87 msgid "Dwfl already has attached state" msgstr "Dwfl już ma załączony stan" -#: libdwfl/libdwflP.h:92 +#: libdwfl/libdwflP.h:88 msgid "Dwfl has no attached state" msgstr "Dwfl nie ma załączonego stanu" -#: libdwfl/libdwflP.h:93 +#: libdwfl/libdwflP.h:89 msgid "Unwinding not supported for this architecture" msgstr "Odwijanie nie jest obsługiwane dla tej architektury" -#: libdwfl/libdwflP.h:94 +#: libdwfl/libdwflP.h:90 msgid "Invalid argument" msgstr "Nieprawidłowy parametr" -#: libdwfl/libdwflP.h:95 +#: libdwfl/libdwflP.h:91 msgid "Not an ET_CORE ELF file" msgstr "Nie jest plikiem ELF ET_CORE" @@ -537,7 +537,7 @@ msgstr "Brak zaplecza" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 -#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 msgid "" msgstr "" @@ -631,7 +631,7 @@ msgstr "nieprawidłowy rozmiar operandu źródłowego" msgid "invalid size of destination operand" msgstr "nieprawidłowy rozmiar operandu docelowego" -#: libelf/elf_error.c:86 src/readelf.c:6378 +#: libelf/elf_error.c:86 src/readelf.c:6758 #, c-format msgid "invalid encoding" msgstr "nieprawidłowe kodowanie" @@ -716,8 +716,8 @@ msgstr "dane/scn nie zgadzają się" msgid "invalid section header" msgstr "nieprawidłowy nagłówek sekcji" -#: libelf/elf_error.c:190 src/readelf.c:10266 src/readelf.c:10866 -#: src/readelf.c:10967 src/readelf.c:11149 +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 #, c-format msgid "invalid data" msgstr "nieprawidłowe dane" @@ -844,23 +844,30 @@ msgid "Show demangled symbols (ARG is always ignored)" msgstr "" "Wyświetla symbole z usuniętym dekorowaniem (PARAMETR jest zawsze ignorowany)" -#: src/addr2line.c:77 +#: src/addr2line.c:76 +#, fuzzy +#| msgid "Show demangled symbols (ARG is always ignored)" +msgid "Show demangled symbols" +msgstr "" +"Wyświetla symbole z usuniętym dekorowaniem (PARAMETR jest zawsze ignorowany)" + +#: src/addr2line.c:78 msgid "Print all information on one line, and indent inlines" msgstr "Wyświetla wszystkie informacje w jednym wierszy i wyrównuje wstawki" -#: src/addr2line.c:79 +#: src/addr2line.c:80 #, fuzzy #| msgid "Show absolute file names using compilation directory" msgid "Show relative file names without compilation directory" msgstr "Wyświetla bezwzględne nazwy plików używając katalogu kompilacji" -#: src/addr2line.c:81 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 #: src/strings.c:77 msgid "Miscellaneous:" msgstr "Różne:" #. Short description of program. -#: src/addr2line.c:89 +#: src/addr2line.c:90 msgid "" "Locate source files and line information for ADDRs (in a.out by default)." msgstr "" @@ -868,25 +875,25 @@ msgstr "" "w a.out)." #. Strings for arguments in help texts. -#: src/addr2line.c:93 +#: src/addr2line.c:94 msgid "[ADDR...]" msgstr "[ADRES…]" -#: src/addr2line.c:526 +#: src/addr2line.c:530 msgid "Section syntax requires exactly one module" msgstr "Składnia sekcji wymaga dokładnie jednego modułu" -#: src/addr2line.c:548 +#: src/addr2line.c:552 #, c-format msgid "offset %# lies outside section '%s'" msgstr "offset %# leży poza sekcją „%s”" -#: src/addr2line.c:658 +#: src/addr2line.c:662 #, c-format msgid "cannot find symbol '%s'" msgstr "nie można odnaleźć symbolu „%s”" -#: src/addr2line.c:663 +#: src/addr2line.c:667 #, c-format msgid "offset %# lies outside contents of '%s'" msgstr "offset %# leży poza zawartością „%s”" @@ -1367,8 +1374,8 @@ msgid "Suppress some error output (counterpart to --verbose)" msgstr "Zmniejsza wyjście błędów (odpowiednik opcji --verbose)" #. Strings for arguments in help texts. -#: src/elfclassify.c:979 src/elfcompress.c:1358 src/elflint.c:76 -#: src/readelf.c:160 +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 msgid "FILE..." msgstr "PLIK…" @@ -1671,47 +1678,58 @@ 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:117 src/strip.c:305 src/unstrip.c:116 +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 #, c-format msgid "-o option specified twice" msgstr "Opcję -o podano dwukrotnie" -#: src/elfcompress.c:124 +#: src/elfcompress.c:135 #, c-format msgid "-t option specified twice" msgstr "Opcję -t podano dwukrotnie" -#: src/elfcompress.c:133 +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "" + +#: src/elfcompress.c:150 #, c-format msgid "unknown compression type '%s'" msgstr "nieznany typ kompresji „%s”" #. We need at least one input file. -#: src/elfcompress.c:145 src/elfcompress.c:1369 +#: src/elfcompress.c:162 src/elfcompress.c:1447 #, c-format msgid "No input file given" msgstr "Nie podano pliku wejściowego" -#: src/elfcompress.c:151 src/elfcompress.c:1373 +#: src/elfcompress.c:168 src/elfcompress.c:1451 #, c-format msgid "Only one input file allowed together with '-o'" msgstr "Tylko jeden plik wejściowy jest dozwolony z „-o”" -#: src/elfcompress.c:1331 +#: src/elfcompress.c:1408 msgid "Place (de)compressed output into FILE" msgstr "Umieszcza zdekompresowane wyjście w PLIKU" -#: src/elfcompress.c:1334 +#: src/elfcompress.c:1411 +#, fuzzy +#| msgid "" +#| "What type of compression to apply. TYPE can be 'none' (decompress), " +#| "'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or " +#| "'zlib-gnu' (.zdebug GNU style compression, 'gnu' is an alias)" msgid "" "What type of compression to apply. TYPE can be 'none' (decompress), " -"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-" -"gnu' (.zdebug GNU style compression, 'gnu' is an alias)" +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" msgstr "" "Typ stosowanej kompresji. TYP może wynosić „none” (dekompresja), " "„zlib” (kompresja zlib ELF, domyślna, „zlib-gabi” to alias) lub „zlib-" "gnu” (kompresja .zdebug w stylu GNU, „gnu” to alias)" -#: src/elfcompress.c:1337 +#: src/elfcompress.c:1415 msgid "" "SECTION name to (de)compress, SECTION is an extended wildcard pattern " "(defaults to '.?(z)debug*')" @@ -1719,11 +1737,11 @@ msgstr "" "Nazwa SEKCJI do (de)kompresowania, SEKCJA jest rozszerzonym wzorem " "(domyślnie „.?(z)debug*”)" -#: src/elfcompress.c:1340 +#: src/elfcompress.c:1418 msgid "Print a message for each section being (de)compressed" msgstr "Wyświetla komunikat dla każdej (de)kompresowanej sekcji" -#: src/elfcompress.c:1343 +#: src/elfcompress.c:1421 msgid "" "Force compression of section even if it would become larger or update/" "rewrite the file even if no section would be (de)compressed" @@ -1732,31 +1750,31 @@ msgstr "" "zaktualizowanie/przepisanie pliku, nawet jeśli żadna sekcja nie zostałaby " "(zde)kompresowana" -#: src/elfcompress.c:1346 src/strip.c:92 +#: src/elfcompress.c:1424 src/strip.c:92 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "Łagodzi kilka reguł, aby obsłużyć lekko uszkodzone pliki ELF" -#: src/elfcompress.c:1349 +#: src/elfcompress.c:1427 msgid "Be silent when a section cannot be compressed" msgstr "Bez zgłaszania, kiedy nie można zdekompresować sekcji" -#: src/elfcompress.c:1359 +#: src/elfcompress.c:1437 msgid "Compress or decompress sections in an ELF file." msgstr "Kompresuje lub dekompresuje sekcje w pliku ELF." -#: src/elflint.c:62 +#: src/elflint.c:63 msgid "Be extremely strict, flag level 2 features." msgstr "Bardzo ścisłe sprawdzanie, cechy poziomu 2 flag." -#: src/elflint.c:63 +#: src/elflint.c:64 msgid "Do not print anything if successful" msgstr "Nie wypisywanie niczego w przypadku powodzenia" -#: src/elflint.c:64 +#: src/elflint.c:65 msgid "Binary is a separate debuginfo file" msgstr "Plik binarny jest oddzielnym plikiem debuginfo" -#: src/elflint.c:66 +#: src/elflint.c:67 msgid "" "Binary has been created with GNU ld and is therefore known to be broken in " "certain ways" @@ -1765,172 +1783,172 @@ msgstr "" "w pewien sposób" #. Short description of program. -#: src/elflint.c:72 +#: src/elflint.c:73 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "" "Szczegółowe sprawdzanie zgodności plików ELF ze specyfikacją gABI/psABI." -#: src/elflint.c:153 src/readelf.c:391 +#: src/elflint.c:154 src/readelf.c:413 #, c-format msgid "cannot open input file '%s'" msgstr "nie można otworzyć pliku wejściowego „%s”" -#: src/elflint.c:160 +#: src/elflint.c:161 #, c-format msgid "cannot generate Elf descriptor for '%s': %s\n" msgstr "nie można utworzyć deskryptora ELF dla „%s”: %s\n" -#: src/elflint.c:179 +#: src/elflint.c:180 #, c-format msgid "error while closing Elf descriptor: %s\n" msgstr "błąd podczas zamykania deskryptora ELF: %s\n" -#: src/elflint.c:183 +#: src/elflint.c:184 msgid "No errors" msgstr "Brak błędów" -#: src/elflint.c:218 src/readelf.c:603 +#: src/elflint.c:219 src/readelf.c:625 msgid "Missing file name.\n" msgstr "Brak nazwy pliku.\n" -#: src/elflint.c:283 +#: src/elflint.c:284 #, c-format msgid " error while freeing sub-ELF descriptor: %s\n" msgstr " błąd podczas zwalniania deskryptora pod-ELF: %s\n" #. We cannot do anything. -#: src/elflint.c:291 +#: src/elflint.c:292 #, c-format msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "To nie jest plik ELF — ma błędne bajty magiczne na początku\n" -#: src/elflint.c:356 +#: src/elflint.c:358 #, c-format msgid "e_ident[%d] == %d is no known class\n" msgstr "e_ident[%d] == %d nie jest znaną klasą\n" -#: src/elflint.c:361 +#: src/elflint.c:363 #, c-format msgid "e_ident[%d] == %d is no known data encoding\n" msgstr "e_ident[%d] == %d nie jest znanym kodowaniem danych\n" -#: src/elflint.c:365 +#: src/elflint.c:367 #, c-format msgid "unknown ELF header version number e_ident[%d] == %d\n" msgstr "nieznany numer wersji nagłówka ELF e_ident[%d] == %d\n" -#: src/elflint.c:373 +#: src/elflint.c:375 #, c-format msgid "unsupported OS ABI e_ident[%d] == '%s'\n" msgstr "nieobsługiwane ABI systemu operacyjnego e_ident[%d] == „%s”\n" -#: src/elflint.c:379 +#: src/elflint.c:381 #, c-format msgid "unsupported ABI version e_ident[%d] == %d\n" msgstr "nieobsługiwana wersja ABI e_ident[%d] == %d\n" -#: src/elflint.c:384 +#: src/elflint.c:386 #, c-format msgid "e_ident[%zu] is not zero\n" msgstr "e_ident[%zu] nie wynosi zero\n" -#: src/elflint.c:389 +#: src/elflint.c:391 #, c-format msgid "unknown object file type %d\n" msgstr "nieznany typ pliku obiektu %d\n" -#: src/elflint.c:396 +#: src/elflint.c:398 #, c-format msgid "unknown machine type %d\n" msgstr "nieznany typ komputera %d\n" -#: src/elflint.c:400 +#: src/elflint.c:402 #, c-format msgid "unknown object file version\n" msgstr "nieznana wersja pliku obiektu\n" -#: src/elflint.c:406 +#: src/elflint.c:408 #, c-format msgid "invalid program header offset\n" msgstr "nieprawidłowy offset nagłówka programu\n" -#: src/elflint.c:408 +#: src/elflint.c:410 #, c-format msgid "executables and DSOs cannot have zero program header offset\n" msgstr "" "pliki wykonywalne i DSO nie mogą mieć zerowego offsetu nagłówka programu\n" -#: src/elflint.c:412 +#: src/elflint.c:414 #, c-format msgid "invalid number of program header entries\n" msgstr "nieprawidłowa liczba wpisów nagłówka programu\n" -#: src/elflint.c:420 +#: src/elflint.c:422 #, c-format msgid "invalid section header table offset\n" msgstr "nieprawidłowy offset tabeli nagłówków sekcji\n" -#: src/elflint.c:423 +#: src/elflint.c:425 #, c-format msgid "section header table must be present\n" msgstr "tabela nagłówków sekcji musi istnieć\n" -#: src/elflint.c:437 +#: src/elflint.c:439 #, c-format msgid "invalid number of section header table entries\n" msgstr "nieprawidłowa liczba wpisów tabeli nagłówków sekcji\n" -#: src/elflint.c:454 +#: src/elflint.c:456 #, c-format msgid "invalid section header index\n" msgstr "nieprawidłowy indeks nagłówka sekcji\n" -#: src/elflint.c:472 +#: src/elflint.c:474 #, c-format msgid "Can only check %u headers, shnum was %u\n" msgstr "Można sprawdzić tylko nagłówki %u, shnum wynosiło %u\n" -#: src/elflint.c:486 +#: src/elflint.c:488 #, c-format msgid "invalid number of program header table entries\n" msgstr "nieprawidłowa liczba wpisów tabeli nagłówka programu\n" -#: src/elflint.c:503 +#: src/elflint.c:505 #, c-format msgid "Can only check %u headers, phnum was %u\n" msgstr "Można sprawdzić tylko nagłówki %u, phnum wynosiło %u\n" -#: src/elflint.c:508 +#: src/elflint.c:510 #, c-format msgid "invalid machine flags: %s\n" msgstr "nieprawidłowe flagi komputera: %s\n" -#: src/elflint.c:515 src/elflint.c:532 +#: src/elflint.c:517 src/elflint.c:534 #, c-format msgid "invalid ELF header size: %hd\n" msgstr "nieprawidłowy rozmiar nagłówka ELF: %hd\n" -#: src/elflint.c:518 src/elflint.c:535 +#: src/elflint.c:520 src/elflint.c:537 #, c-format msgid "invalid program header size: %hd\n" msgstr "nieprawidłowa rozmiar nagłówka programu: %hd\n" -#: src/elflint.c:521 src/elflint.c:538 +#: src/elflint.c:523 src/elflint.c:540 #, c-format msgid "invalid program header position or size\n" msgstr "nieprawidłowe położenie lub rozmiar nagłówka programu\n" -#: src/elflint.c:524 src/elflint.c:541 +#: src/elflint.c:526 src/elflint.c:543 #, c-format msgid "invalid section header size: %hd\n" msgstr "nieprawidłowy rozmiar nagłówka sekcji: %hd\n" -#: src/elflint.c:527 src/elflint.c:544 +#: src/elflint.c:529 src/elflint.c:546 #, c-format msgid "invalid section header position or size\n" msgstr "nieprawidłowe położenie lub rozmiar nagłówka sekcji\n" -#: src/elflint.c:589 +#: src/elflint.c:591 #, c-format msgid "" "section [%2d] '%s': section with SHF_GROUP flag set not part of a section " @@ -1938,21 +1956,21 @@ msgid "" msgstr "" "sekcja [%2d] „%s”: sekcja z flagą SHF_GROUP nie jest częścią grupy sekcji\n" -#: src/elflint.c:593 +#: src/elflint.c:595 #, c-format msgid "" "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" msgstr "" "sekcja [%2d] „%s”: grupa sekcji [%2zu] „%s” nie poprzedza elementu grupy\n" -#: src/elflint.c:609 src/elflint.c:1497 src/elflint.c:1548 src/elflint.c:1654 -#: src/elflint.c:1990 src/elflint.c:2316 src/elflint.c:2942 src/elflint.c:3105 -#: src/elflint.c:3253 src/elflint.c:3455 src/elflint.c:4464 +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 #, 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:622 src/elflint.c:1661 +#: src/elflint.c:624 src/elflint.c:1699 #, c-format msgid "" "section [%2d] '%s': referenced as string table for section [%2d] '%s' but " @@ -1961,7 +1979,7 @@ msgstr "" "sekcja [%2d] „%s”: użyta jako tabela ciągów dla sekcji [%2d] „%s”, ale nie " "jest typu SHT_STRTAB\n" -#: src/elflint.c:645 +#: src/elflint.c:647 #, c-format msgid "" "section [%2d] '%s': symbol table cannot have more than one extended index " @@ -1970,12 +1988,12 @@ msgstr "" "sekcja [%2d] „%s”: tabela symboli nie może mieć więcej niż jednej " "rozszerzonej sekcji indeksów\n" -#: src/elflint.c:657 +#: src/elflint.c:659 #, c-format 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:661 +#: src/elflint.c:663 #, c-format msgid "" "section [%2u] '%s': number of local entries in 'st_info' larger than table " @@ -1984,33 +2002,33 @@ msgstr "" "sekcja [%2u] „%s”: liczba lokalnych wpisów w „st_info” jest większa niż " "rozmiar tabeli\n" -#: src/elflint.c:670 +#: src/elflint.c:672 #, 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:675 src/elflint.c:678 src/elflint.c:681 src/elflint.c:684 -#: src/elflint.c:687 src/elflint.c:690 +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 #, 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:693 +#: src/elflint.c:695 #, 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:703 +#: src/elflint.c:705 #, 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:712 +#: src/elflint.c:714 #, 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:727 +#: src/elflint.c:729 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): too large section index but no extended " @@ -2019,7 +2037,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): za duży indeks sekcji, ale nie ma sekcji " "rozszerzonych indeksów sekcji\n" -#: src/elflint.c:733 +#: src/elflint.c:735 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " @@ -2029,28 +2047,28 @@ msgstr "" "zmieściłby się w st_shndx (%)\n" #. || sym->st_shndx > SHN_HIRESERVE always false -#: src/elflint.c:745 +#: src/elflint.c:747 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nieprawidłowy indeks sekcji\n" -#: src/elflint.c:753 +#: src/elflint.c:755 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nieznany typ\n" -#: src/elflint.c:759 +#: src/elflint.c:761 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nieznane dowiązanie symbolu\n" -#: src/elflint.c:764 +#: src/elflint.c:766 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n" msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): unikalny symbol nie jest typem obiektu\n" -#: src/elflint.c:772 +#: src/elflint.c:774 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " @@ -2059,26 +2077,26 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): COMMON jest dozwolone tylko w plikach " "relokowalnych\n" -#: src/elflint.c:776 +#: src/elflint.c:778 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): lokalne symbole COMMON to nonsens\n" -#: src/elflint.c:780 +#: src/elflint.c:782 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): funkcja w sekcji COMMON to nonsens\n" -#: src/elflint.c:831 +#: src/elflint.c:833 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n" msgstr "sekcja [%2d] „%s”: symbol %zu (%s): st_value spoza zakresu\n" -#: src/elflint.c:837 src/elflint.c:862 src/elflint.c:911 +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " @@ -2087,7 +2105,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s) nie mieści się w całości we wskazywanej " "sekcji [%2d] „%s”\n" -#: src/elflint.c:846 +#: src/elflint.c:848 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " @@ -2096,7 +2114,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): wskazywana sekcja [%2d] „%s” nie ma " "ustawionej flagi SHF_TLS\n" -#: src/elflint.c:856 src/elflint.c:904 +#: src/elflint.c:858 src/elflint.c:906 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " @@ -2105,7 +2123,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): st_value spoza zakresu wskazywanej " "sekcji [%2d] „%s”\n" -#: src/elflint.c:883 +#: src/elflint.c:885 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " @@ -2114,7 +2132,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): symbol TLS, ale brak wpisu TLS nagłówka " "programu\n" -#: src/elflint.c:889 +#: src/elflint.c:891 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " @@ -2123,7 +2141,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): symbol TLS, ale nie można uzyskać wpisu " "TLS nagłówka programu\n" -#: src/elflint.c:897 +#: src/elflint.c:899 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " @@ -2132,7 +2150,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): st_value pomija wskazywaną sekcję [%2d] " "„%s”\n" -#: src/elflint.c:924 +#: src/elflint.c:926 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " @@ -2141,7 +2159,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): lokalny symbol spoza zakresu określonego " "w sh_info\n" -#: src/elflint.c:931 +#: src/elflint.c:933 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " @@ -2150,12 +2168,12 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): nielokalny symbol spoza zakresu " "określonego w sh_info\n" -#: src/elflint.c:938 +#: src/elflint.c:940 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nielokalny symbol sekcji\n" -#: src/elflint.c:988 +#: src/elflint.c:990 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " @@ -2164,7 +2182,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol _GLOBAL_OFFSET_TABLE_ odnosi się do błędnej sekcji " "[%2d]\n" -#: src/elflint.c:995 +#: src/elflint.c:997 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " @@ -2176,7 +2194,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:1011 +#: src/elflint.c:1013 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " @@ -2185,7 +2203,7 @@ msgstr "" "sekcja [%2d] „%s”: wartość symbolu _GLOBAL_OFFSET_TABLE_ %# nie " "pasuje do adresu sekcji %s %#\n" -#: src/elflint.c:1018 +#: src/elflint.c:1020 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " @@ -2194,7 +2212,7 @@ msgstr "" "sekcja [%2d] „%s”: rozmiar symbolu _GLOBAL_OFFSET_TABLE_ % nie " "pasuje do rozmiaru sekcji %s %\n" -#: src/elflint.c:1026 +#: src/elflint.c:1028 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " @@ -2203,7 +2221,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol _GLOBAL_OFFSET_TABLE_ istnieje, ale brak sekcji ." "got\n" -#: src/elflint.c:1042 +#: src/elflint.c:1044 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " @@ -2212,7 +2230,7 @@ msgstr "" "sekcja [%2d] „%s”: wartość symbolu _DYNAMIC_ %# nie pasuje do adresu " "segmentu dynamicznego %#\n" -#: src/elflint.c:1049 +#: src/elflint.c:1051 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " @@ -2221,7 +2239,7 @@ msgstr "" "sekcja [%2d] „%s”: rozmiar symbolu _DYNAMIC_ % nie pasuje do " "rozmiaru segmentu dynamicznego %\n" -#: src/elflint.c:1062 +#: src/elflint.c:1064 #, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" @@ -2230,28 +2248,28 @@ msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): symbol w dynamicznej tabeli symboli " "z niedomyślną widocznością\n" -#: src/elflint.c:1066 +#: src/elflint.c:1068 #, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n" msgstr "" "sekcja [%2d] „%s”: symbol %zu (%s): ustawiono nieznany bit w st_other\n" -#: src/elflint.c:1104 +#: src/elflint.c:1106 #, 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:1120 +#: src/elflint.c:1122 #, 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:1131 src/elflint.c:1184 +#: src/elflint.c:1133 src/elflint.c:1186 #, 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:1156 src/elflint.c:1209 +#: src/elflint.c:1158 src/elflint.c:1211 #, c-format msgid "" "section [%2d] '%s': relative relocations after index %d as specified by " @@ -2260,7 +2278,7 @@ msgstr "" "sekcja [%2d] „%s”: relokacje względne po indeksie %d podanym przez " "DT_RELCOUNT\n" -#: src/elflint.c:1162 src/elflint.c:1215 +#: src/elflint.c:1164 src/elflint.c:1217 #, c-format msgid "" "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " @@ -2269,50 +2287,45 @@ msgstr "" "sekcja [%2d] „%s”: relokacja bezwzględna pod indeksem %zu; DT_RELCOUNT podał " "%d relokacji względnych\n" -#: src/elflint.c:1174 +#: src/elflint.c:1176 #, 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:1257 +#: src/elflint.c:1259 #, c-format msgid "section [%2d] '%s': invalid destination section index\n" msgstr "sekcja [%2d] „%s”: nieprawidłowy indeks sekcji docelowej\n" -#: src/elflint.c:1269 +#: src/elflint.c:1271 #, c-format msgid "section [%2d] '%s': invalid destination section type\n" msgstr "sekcja [%2d] „%s”: nieprawidłowy typ sekcji docelowej\n" -#: src/elflint.c:1277 +#: src/elflint.c:1279 #, c-format msgid "section [%2d] '%s': sh_info should be zero\n" msgstr "sekcja [%2d] „%s”: sh_info musi wynosić zero\n" -#: src/elflint.c:1285 +#: src/elflint.c:1287 #, 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:1293 -#, 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:1353 +#: src/elflint.c:1365 #, 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:1380 +#: src/elflint.c:1392 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid type\n" msgstr "sekcja [%2d] „%s”: relokacja %zu: nieprawidłowy typ\n" -#: src/elflint.c:1388 +#: src/elflint.c:1400 #, c-format msgid "" "section [%2d] '%s': relocation %zu: relocation type invalid for the file " @@ -2321,12 +2334,12 @@ msgstr "" "sekcja [%2d] „%s”: relokacja %zu: typ relokacji nieprawidłowy dla tego typu " "pliku\n" -#: src/elflint.c:1396 +#: src/elflint.c:1408 #, 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:1414 +#: src/elflint.c:1426 #, c-format msgid "" "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " @@ -2335,12 +2348,12 @@ msgstr "" "sekcja [%2d] „%s”: relokacja %zu: z %s można użyć tylko symbolu " "„_GLOBAL_OFFSET_TABLE_”\n" -#: src/elflint.c:1431 +#: src/elflint.c:1443 #, 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:1446 +#: src/elflint.c:1458 #, c-format msgid "" "section [%2d] '%s': relocation %zu: copy relocation against symbol of type " @@ -2348,7 +2361,7 @@ msgid "" msgstr "" "sekcja [%2d] „%s”: relokacja %zu: relokacja kopii względem symbolu typu %s\n" -#: src/elflint.c:1467 +#: src/elflint.c:1479 #, c-format msgid "" "section [%2d] '%s': relocation %zu: read-only section modified but text " @@ -2357,23 +2370,23 @@ msgstr "" "sekcja [%2d] „%s”: relokacja %zu: sekcja tylko do odczytu została " "zmodyfikowana, ale nie ustawiono flagi relokacji tekstu\n" -#: src/elflint.c:1482 +#: src/elflint.c:1494 #, 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:1522 src/elflint.c:1573 +#: src/elflint.c:1534 src/elflint.c:1585 #, 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:1649 +#: src/elflint.c:1687 #, c-format msgid "more than one dynamic section present\n" msgstr "obecna jest więcej niż jedna sekcja dynamiczna\n" -#: src/elflint.c:1667 +#: src/elflint.c:1705 #, c-format msgid "" "section [%2d]: referenced as string table for section [%2d] '%s' but section " @@ -2382,43 +2395,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:1675 +#: src/elflint.c:1713 #, 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:1680 src/elflint.c:1969 +#: src/elflint.c:1718 src/elflint.c:2008 #, c-format msgid "section [%2d] '%s': sh_info not zero\n" msgstr "sekcja [%2d] „%s”: sh_info nie wynosi zero\n" -#: src/elflint.c:1690 +#: src/elflint.c:1728 #, 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:1698 +#: src/elflint.c:1736 #, 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:1705 +#: src/elflint.c:1743 #, c-format msgid "section [%2d] '%s': entry %zu: unknown tag\n" msgstr "sekcja [%2d] „%s”: wpis %zu: nieznany znacznik\n" -#: src/elflint.c:1716 +#: src/elflint.c:1754 #, 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:1726 +#: src/elflint.c:1764 #, 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:1744 +#: src/elflint.c:1782 #, c-format msgid "" "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" @@ -2426,7 +2439,7 @@ msgstr "" "sekcja [%2d] „%s”: wpis %zu: wartość DT_PLTREL musi wynosić DT_REL lub " "DT_RELA\n" -#: src/elflint.c:1757 +#: src/elflint.c:1795 #, c-format msgid "" "section [%2d] '%s': entry %zu: pointer does not match address of section " @@ -2435,14 +2448,14 @@ msgstr "" "sekcja [%2d] „%s”: wpis %zu: wskaźnik nie pasuje do adresu sekcji [%2d] „%s” " "wskazywanej przez sh_link\n" -#: src/elflint.c:1800 +#: src/elflint.c:1839 #, 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:1815 +#: src/elflint.c:1854 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must be valid offset in section " @@ -2451,48 +2464,48 @@ msgstr "" "sekcja [%2d] „%s”: wpis %zu: wartość %s musi być prawidłowym offsetem " "w sekcji [%2d] „%s”\n" -#: src/elflint.c:1835 src/elflint.c:1863 +#: src/elflint.c:1874 src/elflint.c:1902 #, 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:1847 +#: src/elflint.c:1886 #, 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:1856 +#: src/elflint.c:1895 #, c-format msgid "section [%2d] '%s': no hash section present\n" msgstr "sekcja [%2d] „%s”: brak sekcji skrótów\n" -#: src/elflint.c:1871 src/elflint.c:1878 +#: src/elflint.c:1910 src/elflint.c:1917 #, 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:1888 src/elflint.c:1892 +#: src/elflint.c:1927 src/elflint.c:1931 #, 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:1898 +#: src/elflint.c:1937 #, 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:1909 src/elflint.c:1913 src/elflint.c:1917 src/elflint.c:1921 +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 #, 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:1933 +#: src/elflint.c:1972 #, c-format msgid "" "section [%2d] '%s': only relocatable files can have extended section index\n" @@ -2500,7 +2513,7 @@ msgstr "" "sekcja [%2d] „%s”: tylko pliki relokowalne mogą mieć rozszerzoną sekcję " "indeksów\n" -#: src/elflint.c:1943 +#: src/elflint.c:1982 #, c-format msgid "" "section [%2d] '%s': extended section index section not for symbol table\n" @@ -2508,31 +2521,31 @@ msgstr "" "sekcja [%2d] „%s”: sekcja rozszerzonych indeksów sekcji nie dla tabeli " "symboli\n" -#: src/elflint.c:1947 +#: src/elflint.c:1986 #, 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:1952 +#: src/elflint.c:1991 #, c-format msgid "cannot get data for symbol section\n" msgstr "nie można uzyskać danych dla sekcji symboli\n" -#: src/elflint.c:1955 +#: src/elflint.c:1994 #, 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:1964 +#: src/elflint.c:2003 #, 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:1979 +#: src/elflint.c:2018 #, c-format msgid "" "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " @@ -2541,24 +2554,24 @@ msgstr "" "sekcja [%2d] „%s”: rozszerzony indeks sekcji w sekcji [%2zu] „%s” odwołuje " "się do tej samej tabeli symboli\n" -#: src/elflint.c:1997 +#: src/elflint.c:2036 #, c-format msgid "symbol 0 should have zero extended section index\n" msgstr "symbol 0 musi mieć zerowy rozszerzony indeks sekcji\n" -#: src/elflint.c:2009 +#: src/elflint.c:2048 #, c-format msgid "cannot get data for symbol %zu\n" msgstr "nie można uzyskać danych dla symbolu %zu\n" -#: src/elflint.c:2014 +#: src/elflint.c:2053 #, c-format msgid "extended section index is % but symbol index is not XINDEX\n" msgstr "" "rozszerzony indeks sekcji wynosi %, ale indeks symbolu nie wynosi " "XINDEX\n" -#: src/elflint.c:2031 src/elflint.c:2088 +#: src/elflint.c:2070 src/elflint.c:2127 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" @@ -2566,43 +2579,43 @@ msgstr "" "sekcja [%2d] „%s”: sekcja tabeli mieszającej jest za mała (%ld, oczekiwano " "%ld)\n" -#: src/elflint.c:2045 src/elflint.c:2102 +#: src/elflint.c:2084 src/elflint.c:2141 #, 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:2059 src/elflint.c:2116 +#: src/elflint.c:2098 src/elflint.c:2155 #, 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:2069 +#: src/elflint.c:2108 #, 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:2126 +#: src/elflint.c:2165 #, c-format msgid "section [%2d] '%s': hash chain reference % out of bounds\n" msgstr "" "sekcja [%2d] „%s”: odwołanie do łańcucha skrótu % jest spoza " "zakresu\n" -#: src/elflint.c:2139 +#: src/elflint.c:2178 #, c-format msgid "section [%2d] '%s': not enough data\n" msgstr "sekcja [%2d] „%s”: brak wystarczającej ilości danych\n" -#: src/elflint.c:2151 +#: src/elflint.c:2190 #, 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:2167 +#: src/elflint.c:2206 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected at " @@ -2611,13 +2624,13 @@ msgstr "" "sekcja [%2d] „%s”: sekcja tabeli mieszającej jest za mała (wynosi %ld, " "oczekiwano co najmniej %ld)\n" -#: src/elflint.c:2176 +#: src/elflint.c:2215 #, 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:2210 +#: src/elflint.c:2249 #, c-format msgid "" "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" @@ -2625,7 +2638,7 @@ msgstr "" "sekcja [%2d] „%s”: łańcuch mieszający dla kubełka %zu jest mniejszy niż " "przesunięcie indeksu symboli\n" -#: src/elflint.c:2231 +#: src/elflint.c:2270 #, c-format msgid "" "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " @@ -2634,7 +2647,7 @@ msgstr "" "sekcja [%2d] „%s”: symbol %u wskazywany w łańcuchu dla kubełka %zu jest " "nieokreślony\n" -#: src/elflint.c:2244 +#: src/elflint.c:2283 #, c-format msgid "" "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" @@ -2642,7 +2655,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:2253 +#: src/elflint.c:2292 #, c-format msgid "" "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" @@ -2650,12 +2663,12 @@ msgstr "" "sekcja [%2d] „%s”: indeks maski dla symbolu %u w łańcuchu dla kubełka %zu " "jest błędny\n" -#: src/elflint.c:2283 +#: src/elflint.c:2322 #, 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:2288 +#: src/elflint.c:2327 #, c-format msgid "" "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" @@ -2663,41 +2676,41 @@ msgstr "" "sekcja [%2d] „%s”: odwołanie do symbolu w łańcuchu dla kubełka %zu jest " "spoza zakresu\n" -#: src/elflint.c:2294 +#: src/elflint.c:2333 #, 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:2307 +#: src/elflint.c:2346 #, 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:2325 +#: src/elflint.c:2364 #, 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:2329 +#: src/elflint.c:2368 #, 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:2339 +#: src/elflint.c:2378 #, 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:2344 +#: src/elflint.c:2383 #, c-format msgid "section [%2d] '%s': not marked to be allocated\n" msgstr "sekcja [%2d] „%s”: nieoznaczona do przydzielenia\n" -#: src/elflint.c:2349 +#: src/elflint.c:2388 #, c-format msgid "" "section [%2d] '%s': hash table has not even room for initial administrative " @@ -2706,29 +2719,29 @@ msgstr "" "sekcja [%2d] „%s”: tabela mieszająca nie ma miejsca nawet na początkowe " "wpisy administracyjne\n" -#: src/elflint.c:2398 +#: src/elflint.c:2437 #, 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:2422 src/elflint.c:2487 src/elflint.c:2522 +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 #, 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:2443 +#: src/elflint.c:2482 #, 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:2454 src/elflint.c:2498 src/elflint.c:2535 +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 #, 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:2469 +#: src/elflint.c:2508 #, c-format msgid "" "hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " @@ -2737,17 +2750,17 @@ msgstr "" "sekcja mieszająca [%2zu] „%s” nieprawidłowy indeks symboli % " "(max_nsyms: %, nentries: %\n" -#: src/elflint.c:2556 +#: src/elflint.c:2595 #, c-format msgid "hash section [%2zu] '%s' invalid sh_entsize\n" msgstr "sekcja mieszania [%2zu] „%s” nieprawidłowe sh_entsize\n" -#: src/elflint.c:2566 src/elflint.c:2570 +#: src/elflint.c:2605 src/elflint.c:2609 #, 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:2577 +#: src/elflint.c:2616 #, c-format msgid "" "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash " @@ -2756,7 +2769,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:2589 +#: src/elflint.c:2628 #, c-format msgid "" "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash " @@ -2765,12 +2778,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:2605 +#: src/elflint.c:2644 #, 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:2625 +#: src/elflint.c:2664 #, c-format msgid "" "section [%2d] '%s': section groups only allowed in relocatable object files\n" @@ -2778,96 +2791,96 @@ msgstr "" "sekcja [%2d] „%s”: w plikach obiektów relokowalnych dozwolone są tylko grupy " "sekcji\n" -#: src/elflint.c:2636 +#: src/elflint.c:2675 #, 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:2641 +#: src/elflint.c:2680 #, 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:2647 +#: src/elflint.c:2686 #, 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:2652 +#: src/elflint.c:2691 #, c-format msgid "section [%2d] '%s': sh_flags not zero\n" msgstr "sekcja [%2d] „%s”: niezerowe sh_flags\n" -#: src/elflint.c:2659 +#: src/elflint.c:2698 #, 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:2663 +#: src/elflint.c:2702 #, 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:2668 +#: src/elflint.c:2707 #, 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:2674 +#: src/elflint.c:2713 #, 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:2680 +#: src/elflint.c:2719 #, 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:2689 +#: src/elflint.c:2728 #, 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:2695 +#: src/elflint.c:2734 #, 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:2703 +#: src/elflint.c:2742 #, c-format msgid "section [%2d] '%s': section group without member\n" msgstr "sekcja [%2d] „%s”: grupa sekcji bez elementów\n" -#: src/elflint.c:2707 +#: src/elflint.c:2746 #, 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:2718 +#: src/elflint.c:2757 #, c-format msgid "section [%2d] '%s': unknown section group flags\n" msgstr "sekcja [%2d] „%s”: nieznane flagi grupy sekcji\n" -#: src/elflint.c:2730 +#: src/elflint.c:2769 #, 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:2739 +#: src/elflint.c:2778 #, 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:2746 +#: src/elflint.c:2785 #, 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:2752 +#: src/elflint.c:2791 #, c-format msgid "" "section [%2d] '%s': element %zu references section [%2d] '%s' without " @@ -2876,12 +2889,12 @@ msgstr "" "sekcja [%2d] „%s”: element %zu odwołuje się do sekcji [%2d] „%s” bez flagi " "SHF_GROUP\n" -#: src/elflint.c:2759 +#: src/elflint.c:2798 #, 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:2956 +#: src/elflint.c:2995 #, c-format msgid "" "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no " @@ -2890,7 +2903,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:2968 +#: src/elflint.c:3007 #, c-format msgid "" "section [%2d] '%s' has different number of entries than symbol table [%2d] " @@ -2898,76 +2911,76 @@ msgid "" msgstr "" "sekcja [%2d] „%s” ma inną liczbę wpisów niż tabela symboli [%2d] „%s”\n" -#: src/elflint.c:2984 +#: src/elflint.c:3023 #, 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:3000 +#: src/elflint.c:3039 #, 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:3008 +#: src/elflint.c:3047 #, 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:3022 +#: src/elflint.c:3061 #, 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:3027 +#: src/elflint.c:3066 #, 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:3037 +#: src/elflint.c:3076 #, 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:3090 +#: src/elflint.c:3129 #, 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:3098 src/elflint.c:3245 +#: src/elflint.c:3137 src/elflint.c:3284 #, 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:3123 src/elflint.c:3299 +#: src/elflint.c:3162 src/elflint.c:3338 #, 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:3130 src/elflint.c:3306 +#: src/elflint.c:3169 src/elflint.c:3345 #, 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:3140 +#: src/elflint.c:3179 #, 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:3148 +#: src/elflint.c:3187 #, 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:3160 +#: src/elflint.c:3199 #, 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:3168 +#: src/elflint.c:3207 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " @@ -2976,7 +2989,7 @@ msgstr "" "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma nieprawidłowe " "odniesienie do nazwy\n" -#: src/elflint.c:3177 +#: src/elflint.c:3216 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " @@ -2985,7 +2998,7 @@ msgstr "" "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma błędną wartość skrótu: " "%#x, oczekiwano %#x\n" -#: src/elflint.c:3186 +#: src/elflint.c:3225 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " @@ -2994,19 +3007,19 @@ msgstr "" "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma powtórzoną nazwę wersji " "„%s”\n" -#: src/elflint.c:3197 +#: src/elflint.c:3236 #, 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:3214 src/elflint.c:3390 +#: src/elflint.c:3253 src/elflint.c:3429 #, 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:3222 src/elflint.c:3398 +#: src/elflint.c:3261 src/elflint.c:3437 #, c-format msgid "" "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " @@ -3015,43 +3028,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:3237 +#: src/elflint.c:3276 #, 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:3284 +#: src/elflint.c:3323 #, 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:3288 +#: src/elflint.c:3327 #, 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:3294 +#: src/elflint.c:3333 #, 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:3321 +#: src/elflint.c:3360 #, 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:3328 +#: src/elflint.c:3367 #, 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:3336 +#: src/elflint.c:3375 #, 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:3356 +#: src/elflint.c:3395 #, c-format msgid "" "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" @@ -3059,51 +3072,51 @@ msgstr "" "sekcja [%2d] „%s”: wpis %d ma nieprawidłowe odniesienie do nazwy w danych " "dodatkowych\n" -#: src/elflint.c:3373 +#: src/elflint.c:3412 #, 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:3406 +#: src/elflint.c:3445 #, c-format msgid "section [%2d] '%s': no BASE definition\n" msgstr "sekcja [%2d] „%s”: brak definicji BASE\n" -#: src/elflint.c:3422 +#: src/elflint.c:3461 #, c-format msgid "section [%2d] '%s': unknown parent version '%s'\n" msgstr "sekcja [%2d] „%s”: nieznana wersja rodzica „%s”\n" -#: src/elflint.c:3447 +#: src/elflint.c:3486 #, c-format msgid "section [%2d] '%s': empty object attributes section\n" msgstr "sekcja [%2d] „%s”: pusta sekcja atrybutów obiektu\n" -#: src/elflint.c:3463 +#: src/elflint.c:3502 #, c-format msgid "section [%2d] '%s': unrecognized attribute format\n" msgstr "sekcja [%2d] „%s”: nierozpoznany format atrybutu\n" -#: src/elflint.c:3474 +#: src/elflint.c:3513 #, 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:3483 +#: src/elflint.c:3522 #, 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:3495 +#: src/elflint.c:3534 #, 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:3512 +#: src/elflint.c:3551 #, c-format msgid "" "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" @@ -3111,19 +3124,19 @@ msgstr "" "sekcja [%2d] „%s”: offset %zu: niekończące się ULEB128 w znaczniku podsekcji " "atrybutów\n" -#: src/elflint.c:3521 +#: src/elflint.c:3560 #, 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:3530 +#: src/elflint.c:3569 #, 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:3545 +#: src/elflint.c:3584 #, c-format msgid "" "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" @@ -3131,7 +3144,7 @@ msgstr "" "sekcja [%2d] „%s”: offset %zu: nieprawidłowa długość w podsekcji atrybutów\n" #. Tag_File -#: src/elflint.c:3556 +#: src/elflint.c:3595 #, c-format msgid "" "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" @@ -3139,23 +3152,23 @@ msgstr "" "sekcja [%2d] „%s”: offset %zu: podsekcja atrybutów ma nieoczekiwany znacznik " "%u\n" -#: src/elflint.c:3574 +#: src/elflint.c:3616 #, 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:3585 +#: src/elflint.c:3627 #, 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:3598 +#: src/elflint.c:3640 #, 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:3602 +#: src/elflint.c:3644 #, c-format msgid "" "section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" @@ -3163,12 +3176,12 @@ msgstr "" "sekcja [%2d] „%s”: offset %zu: atrybut %s ma nierozpoznaną wartość " "%\n" -#: src/elflint.c:3612 +#: src/elflint.c:3654 #, 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:3618 +#: src/elflint.c:3660 #, c-format msgid "" "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" @@ -3176,47 +3189,47 @@ msgstr "" "sekcja [%2d] „%s”: offset %zu: dodatkowe bajty po ostatniej sekcji " "atrybutów\n" -#: src/elflint.c:3715 +#: src/elflint.c:3758 #, c-format msgid "cannot get section header of zeroth section\n" msgstr "nie można uzyskać nagłówka sekcji zerowej\n" -#: src/elflint.c:3719 +#: src/elflint.c:3762 #, c-format msgid "zeroth section has nonzero name\n" msgstr "sekcja zerowa ma niezerową nazwę\n" -#: src/elflint.c:3721 +#: src/elflint.c:3764 #, c-format msgid "zeroth section has nonzero type\n" msgstr "sekcja zerowa ma niezerowy typ\n" -#: src/elflint.c:3723 +#: src/elflint.c:3766 #, c-format msgid "zeroth section has nonzero flags\n" msgstr "sekcja zerowa ma niezerowe flagi\n" -#: src/elflint.c:3725 +#: src/elflint.c:3768 #, c-format msgid "zeroth section has nonzero address\n" msgstr "sekcja zerowa ma niezerowy adres\n" -#: src/elflint.c:3727 +#: src/elflint.c:3770 #, c-format msgid "zeroth section has nonzero offset\n" msgstr "sekcja zerowa ma niezerowy offset\n" -#: src/elflint.c:3729 +#: src/elflint.c:3772 #, c-format msgid "zeroth section has nonzero align value\n" msgstr "sekcja zerowa ma niezerową wartość wyrównania\n" -#: src/elflint.c:3731 +#: src/elflint.c:3774 #, c-format msgid "zeroth section has nonzero entry size value\n" msgstr "sekcja zerowa ma niezerową wartość rozmiaru wpisu\n" -#: src/elflint.c:3734 +#: src/elflint.c:3777 #, c-format msgid "" "zeroth section has nonzero size value while ELF header has nonzero shnum " @@ -3225,7 +3238,7 @@ msgstr "" "sekcja zerowa ma niezerową wartość rozmiaru, a nagłówek ELF ma niezerową " "wartość shnum\n" -#: src/elflint.c:3738 +#: src/elflint.c:3781 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " @@ -3234,7 +3247,7 @@ msgstr "" "sekcja zerowa ma niezerową wartość dowiązań, a nagłówek ELF nie wskazuje " "przepełnienia w shstrndx\n" -#: src/elflint.c:3742 +#: src/elflint.c:3785 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " @@ -3243,46 +3256,46 @@ msgstr "" "sekcja zerowa ma niezerową wartość dowiązań, a nagłówek ELF nie wskazuje " "przepełnienia w phnum\n" -#: src/elflint.c:3760 +#: src/elflint.c:3803 #, 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:3769 +#: src/elflint.c:3812 #, c-format msgid "section [%2zu]: invalid name\n" msgstr "sekcja [%2zu]: nieprawidłowa nazwa\n" -#: src/elflint.c:3796 +#: src/elflint.c:3839 #, 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:3813 +#: src/elflint.c:3856 #, 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:3831 +#: src/elflint.c:3874 #, 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:3848 +#: src/elflint.c:3891 #, c-format msgid "section [%2zu] '%s' present in object file\n" msgstr "sekcja [%2zu] „%s” jest obecna w pliku obiektu\n" -#: src/elflint.c:3854 src/elflint.c:3886 +#: src/elflint.c:3897 src/elflint.c:3929 #, 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:3859 src/elflint.c:3891 +#: src/elflint.c:3902 src/elflint.c:3934 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " @@ -3290,7 +3303,7 @@ msgid "" msgstr "" "sekcja [%2zu] „%s” nie ma flagi SHF_ALLOC, ale są segmenty wczytywalne\n" -#: src/elflint.c:3867 +#: src/elflint.c:3910 #, c-format msgid "" "section [%2zu] '%s' is extension section index table in non-object file\n" @@ -3298,22 +3311,22 @@ msgstr "" "sekcja [%2zu] „%s” jest tabelą indeksów sekcji rozszerzeń w pliku " "nieobiektowym\n" -#: src/elflint.c:3910 +#: src/elflint.c:3953 #, 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:3915 +#: src/elflint.c:3958 #, c-format msgid "cannot get section header\n" msgstr "nie można uzyskać nagłówka sekcji\n" -#: src/elflint.c:3925 +#: src/elflint.c:3968 #, c-format msgid "section [%2zu] '%s' has unsupported type %d\n" msgstr "sekcja [%2zu] „%s” ma nieobsługiwany typ %d\n" -#: src/elflint.c:3945 +#: src/elflint.c:3988 #, c-format msgid "" "section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" @@ -3321,74 +3334,74 @@ msgstr "" "sekcja [%2zu] „%s” zawiera nieprawidłowe flagi dla konkretnego procesora " "%#\n" -#: src/elflint.c:3955 +#: src/elflint.c:3998 #, c-format msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" msgstr "sekcja [%2zu] „%s” zawiera nieznane flagi %#\n" -#: src/elflint.c:3963 +#: src/elflint.c:4006 #, 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:3973 +#: src/elflint.c:4016 #, 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:3978 +#: src/elflint.c:4021 #, 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:3984 +#: src/elflint.c:4027 #, 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:3990 +#: src/elflint.c:4033 #, 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:3995 +#: src/elflint.c:4038 #, 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:4002 +#: src/elflint.c:4045 #, 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:4007 +#: src/elflint.c:4050 #, 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:4026 +#: src/elflint.c:4069 #, 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:4035 +#: src/elflint.c:4078 #, 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:4042 +#: src/elflint.c:4085 #, c-format msgid "section [%2zu] '%s' is both executable and writable\n" msgstr "sekcja [%2zu] „%s” jest wykonywalne i zapisywalne\n" -#: src/elflint.c:4073 +#: src/elflint.c:4116 #, c-format msgid "" "section [%2zu] '%s' not fully contained in segment of program header entry " @@ -3397,7 +3410,7 @@ msgstr "" "sekcja [%2zu] „%s” nie jest w całości zawarta w segmencie wpisu %d nagłówka " "programu\n" -#: src/elflint.c:4083 +#: src/elflint.c:4126 #, c-format msgid "" "section [%2zu] '%s' has type NOBITS but is read from the file in segment of " @@ -3406,7 +3419,7 @@ msgstr "" "sekcja [%2zu] „%s” ma typ NOBITS, a jest odczytywana z pliku w segmencie " "wpisu %d nagłówka programu\n" -#: src/elflint.c:4109 +#: src/elflint.c:4152 #, c-format msgid "" "section [%2zu] '%s' has type NOBITS but is read from the file in segment of " @@ -3415,7 +3428,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:4120 +#: src/elflint.c:4163 #, c-format msgid "" "section [%2zu] '%s' has not type NOBITS but is not read from the file in " @@ -3424,17 +3437,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:4131 +#: src/elflint.c:4174 #, 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:4141 +#: src/elflint.c:4184 #, 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:4151 +#: src/elflint.c:4194 #, c-format msgid "" "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" @@ -3442,7 +3455,7 @@ msgstr "" "sekcja [%2zu] „%s”: ma flagę alloc, ale sekcja nie jest w żadnym segmencie " "wczytywalnym\n" -#: src/elflint.c:4157 +#: src/elflint.c:4200 #, c-format msgid "" "section [%2zu] '%s': ELF header says this is the section header string table " @@ -3451,7 +3464,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:4165 +#: src/elflint.c:4208 #, c-format msgid "" "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" @@ -3459,17 +3472,17 @@ msgstr "" "sekcja [%2zu] „%s”: pliki relokowalne nie mogą mieć tabeli symboli " "dynamicznych\n" -#: src/elflint.c:4216 +#: src/elflint.c:4263 #, 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:4239 +#: src/elflint.c:4286 #, 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:4250 +#: src/elflint.c:4297 #, c-format msgid "" "loadable segment [%u] is executable but contains no executable sections\n" @@ -3477,14 +3490,14 @@ msgstr "" "wczytywalny segment [%u] jest wykonywalny, ale nie zawiera wykonywalnych " "sekcji\n" -#: src/elflint.c:4256 +#: src/elflint.c:4303 #, 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:4267 +#: src/elflint.c:4314 #, c-format msgid "" "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " @@ -3493,23 +3506,23 @@ msgstr "" "brak sekcji .gnu.versym, ale istnieje sekcja .gnu.versym_d lub .gnu." "versym_r\n" -#: src/elflint.c:4280 +#: src/elflint.c:4327 #, c-format msgid "duplicate version index %d\n" msgstr "powtórzony indeks wersji %d\n" -#: src/elflint.c:4294 +#: src/elflint.c:4341 #, 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:4343 +#: src/elflint.c:4390 #, c-format msgid "phdr[%d]: unknown core file note type % at offset %\n" msgstr "" "phdr[%d]: nieznany typ notatki pliku core % pod offsetem %\n" -#: src/elflint.c:4347 +#: src/elflint.c:4394 #, c-format msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" @@ -3517,7 +3530,7 @@ msgstr "" "sekcja [%2d]: „%s”: nieznany typ notatki pliku core % pod offsetem " "%zu\n" -#: src/elflint.c:4403 +#: src/elflint.c:4450 #, c-format msgid "" "phdr[%d]: unknown object file note type % with owner name '%s' at " @@ -3526,7 +3539,7 @@ msgstr "" "phdr[%d]: nieznany typ notatki pliku obiektu % o nazwie właściciela " "„%s” pod offsetem %zu\n" -#: src/elflint.c:4408 +#: src/elflint.c:4455 #, c-format msgid "" "section [%2d] '%s': unknown object file note type % with owner name " @@ -3535,37 +3548,37 @@ msgstr "" "sekcja [%2d] „%s”: nieznany typ notatki pliku obiektu % o nazwie " "właściciela „%s” pod offsetem %zu\n" -#: src/elflint.c:4427 +#: src/elflint.c:4474 #, 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:4447 +#: src/elflint.c:4494 #, 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:4450 +#: src/elflint.c:4497 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "phdr[%d]: dodatkowe % B po ostatniej notatce\n" -#: src/elflint.c:4471 +#: src/elflint.c:4518 #, 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:4478 +#: src/elflint.c:4525 #, 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:4481 +#: src/elflint.c:4528 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "sekcja [%2d] „%s”: dodatkowe % B po ostatniej notatce\n" -#: src/elflint.c:4499 +#: src/elflint.c:4546 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" @@ -3573,135 +3586,135 @@ msgstr "" "tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą mieć " "nagłówki programu\n" -#: src/elflint.c:4514 +#: src/elflint.c:4561 #, 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:4524 +#: src/elflint.c:4571 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" "wpis nagłówka programu %d: nieznany typ wpisu nagłówka programu %#\n" -#: src/elflint.c:4535 +#: src/elflint.c:4582 #, 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:4543 +#: src/elflint.c:4590 #, 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:4550 +#: src/elflint.c:4597 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "statyczny plik wykonywalny nie może mieć sekcji dynamicznych\n" -#: src/elflint.c:4564 +#: src/elflint.c:4611 #, 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:4567 +#: src/elflint.c:4614 #, 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:4577 +#: src/elflint.c:4624 #, 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:4598 +#: src/elflint.c:4645 #, 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:4609 +#: src/elflint.c:4656 #, 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:4616 +#: src/elflint.c:4663 #, 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:4625 src/elflint.c:4648 +#: src/elflint.c:4672 src/elflint.c:4695 #, 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:4654 +#: src/elflint.c:4701 #, 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:4681 +#: src/elflint.c:4728 #, 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:4684 +#: src/elflint.c:4731 #, 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:4697 +#: src/elflint.c:4744 #, 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:4705 +#: src/elflint.c:4752 #, c-format msgid "call frame search table must be allocated\n" msgstr "tabela wyszukiwania ramki wywołania musi być przydzielona\n" -#: src/elflint.c:4708 +#: src/elflint.c:4755 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "sekcja [%2zu] „%s”: musi być przydzielona\n" -#: src/elflint.c:4712 +#: src/elflint.c:4759 #, 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:4715 +#: src/elflint.c:4762 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "sekcja [%2zu] „%s” nie może być zapisywalna\n" -#: src/elflint.c:4720 +#: src/elflint.c:4767 #, 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:4723 +#: src/elflint.c:4770 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "sekcja [%2zu] „%s” nie może być wykonywalna\n" -#: src/elflint.c:4737 +#: src/elflint.c:4784 #, 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:4744 +#: src/elflint.c:4791 #, 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:4747 +#: src/elflint.c:4794 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " @@ -3710,7 +3723,7 @@ msgstr "" "wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są " "wielokrotnością wyrównania\n" -#: src/elflint.c:4760 +#: src/elflint.c:4807 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " @@ -3719,17 +3732,17 @@ msgstr "" "plik wykonywalny/DSO z sekcją .eh_frame_hdr nie ma wpisu nagłówka programu " "PT_GNU_EH_FRAME" -#: src/elflint.c:4794 +#: src/elflint.c:4841 #, c-format msgid "cannot read ELF header: %s\n" msgstr "nie można odczytać nagłówka ELF: %s\n" -#: src/elflint.c:4806 +#: src/elflint.c:4853 #, c-format msgid "cannot create backend for ELF file\n" msgstr "nie można utworzyć zaplecza dla pliku ELF\n" -#: src/elflint.c:4827 +#: src/elflint.c:4874 #, c-format msgid "text relocation flag set but not needed\n" msgstr "flaga relokacji tekstu jest ustawiona, ale niepotrzebna\n" @@ -3942,7 +3955,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: BŁĄD WEWNĘTRZNY %d (%s): %s" #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 -#: src/strip.c:2766 +#: src/strip.c:2763 #, c-format msgid "while closing '%s'" msgstr "podczas zamykania „%s”" @@ -3985,13 +3998,13 @@ msgstr "%s%s%s: nie rozpoznano formatu pliku" msgid "cannot create search tree" msgstr "nie można utworzyć drzewa wyszukiwania" -#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663 -#: src/readelf.c:1471 src/readelf.c:1620 src/readelf.c:1847 src/readelf.c:2084 -#: src/readelf.c:2273 src/readelf.c:2451 src/readelf.c:2526 src/readelf.c:2791 -#: src/readelf.c:2866 src/readelf.c:2952 src/readelf.c:3547 src/readelf.c:3595 -#: src/readelf.c:3664 src/readelf.c:11581 src/readelf.c:12771 -#: src/readelf.c:12981 src/readelf.c:13049 src/size.c:396 src/size.c:467 -#: src/strip.c:1093 +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 #, c-format msgid "cannot get section header string table index" msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji" @@ -4100,7 +4113,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:217 src/readelf.c:608 +#: src/objdump.c:217 src/readelf.c:630 msgid "No operation specified.\n" msgstr "Nie podano działania.\n" @@ -4109,11 +4122,11 @@ msgstr "Nie podano działania.\n" msgid "while close `%s'" msgstr "podczas zamykania „%s”" -#: src/objdump.c:362 src/readelf.c:2179 src/readelf.c:2370 +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 msgid "INVALID SYMBOL" msgstr "NIEPRAWIDŁOWY SYMBOL" -#: src/objdump.c:377 src/readelf.c:2213 src/readelf.c:2406 +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 msgid "INVALID SECTION" msgstr "NIEPRAWIDŁOWA SEKCJA" @@ -4170,18 +4183,18 @@ msgstr "„%s” nie jest archiwum" msgid "error while freeing sub-ELF descriptor: %s" msgstr "błąd podczas zwalniania deskryptora pod-ELF: %s" -#: src/readelf.c:96 +#: src/readelf.c:97 msgid "ELF input selection:" msgstr "Wybór wyjścia ELF:" -#: src/readelf.c:98 +#: src/readelf.c:99 msgid "" "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" msgstr "" "Używa podanej SEKCJI (domyślnie .gnu_debugdata) jako (skompresowanych) " "danych wejściowych ELF" -#: src/readelf.c:101 +#: src/readelf.c:102 msgid "" "Used with -w to find the skeleton Compile Units in FILE associated with the " "Split Compile units in a .dwo input file" @@ -4189,71 +4202,71 @@ msgstr "" "Używane z opcją -w do wyszukiwania szkieletów jednostek kompilacji w PLIKU " "powiązanych z jednostkami podzielonej kompilacji w pliku wejściowym .dwo" -#: src/readelf.c:103 +#: src/readelf.c:104 msgid "ELF output selection:" msgstr "Wybór wyjścia ELF:" -#: src/readelf.c:105 +#: src/readelf.c:106 msgid "All these plus -p .strtab -p .dynstr -p .comment" msgstr "Wszystkie te plus -p .strtab -p .dynstr -p .comment" -#: src/readelf.c:106 +#: src/readelf.c:107 msgid "Display the dynamic segment" msgstr "Wyświetla segment dynamiczny" -#: src/readelf.c:107 +#: src/readelf.c:108 msgid "Display the ELF file header" msgstr "Wyświetla nagłówek pliku ELF" -#: src/readelf.c:109 +#: src/readelf.c:110 msgid "Display histogram of bucket list lengths" msgstr "Wyświetla histogram długości list kubełków" -#: src/readelf.c:110 +#: src/readelf.c:111 msgid "Display the program headers" msgstr "Wyświetla nagłówki programu" -#: src/readelf.c:112 +#: src/readelf.c:113 msgid "Display relocations" msgstr "Wyświetla relokacje" -#: src/readelf.c:113 +#: src/readelf.c:114 msgid "Display the section groups" msgstr "Wyświetla grupy sekcji" -#: src/readelf.c:114 +#: src/readelf.c:115 msgid "Display the sections' headers" msgstr "Wyświetla nagłówki sekcji" -#: src/readelf.c:117 +#: src/readelf.c:118 msgid "Display the symbol table sections" msgstr "Wyświetla sekcje tabeli symboli" -#: src/readelf.c:120 +#: src/readelf.c:121 msgid "Display (only) the dynamic symbol table" msgstr "Wyświetla (tylko) tabelę symboli dynamicznych" -#: src/readelf.c:121 +#: src/readelf.c:122 msgid "Display versioning information" msgstr "Wyświetla informacje o wersji" -#: src/readelf.c:122 +#: src/readelf.c:123 msgid "Display the ELF notes" msgstr "Wyświetla notatki ELF" -#: src/readelf.c:124 +#: src/readelf.c:125 msgid "Display architecture specific information, if any" msgstr "Wyświetla informacje dla konkretnej architektury, jeśli są" -#: src/readelf.c:126 +#: src/readelf.c:127 msgid "Display sections for exception handling" msgstr "Wyświetla sekcje do obsługi wyjątków" -#: src/readelf.c:128 +#: src/readelf.c:129 msgid "Additional output selection:" msgstr "Dodatkowy wybór wyjścia:" -#: src/readelf.c:130 +#: src/readelf.c:131 msgid "" "Display DWARF section content. SECTION can be one of abbrev, addr, aranges, " "decodedaranges, frame, gdb_index, info, info+, loc, line, decodedline, " @@ -4263,42 +4276,42 @@ msgstr "" "aranges, decodedaranges, frame, gdb_index, info, info+, loc, line, " "decodedline, ranges, pubnames, str, macinfo, macro lub exception" -#: src/readelf.c:134 +#: src/readelf.c:135 msgid "Dump the uninterpreted contents of SECTION, by number or name" msgstr "Zrzuca niezinterpretowaną zawartość SEKCJI, według liczny lub nazwy" -#: src/readelf.c:136 +#: src/readelf.c:137 msgid "Print string contents of sections" msgstr "Wyświetla zawartość ciągów sekcji" -#: src/readelf.c:139 +#: src/readelf.c:140 msgid "Display the symbol index of an archive" msgstr "Wyświetla indeks symboli archiwum" -#: src/readelf.c:141 +#: src/readelf.c:142 msgid "Use the dynamic segment when possible for displaying info" msgstr "" -#: src/readelf.c:143 +#: src/readelf.c:144 msgid "Output control:" msgstr "Kontrola wyjścia:" -#: src/readelf.c:145 +#: src/readelf.c:146 msgid "Do not find symbol names for addresses in DWARF data" msgstr "Bez odnajdywania nazw symboli dla adresów w danych DWARF" -#: src/readelf.c:147 +#: src/readelf.c:148 msgid "" "Display just offsets instead of resolving values to addresses in DWARF data" msgstr "" "Wyświetla tylko offsety zamiast rozwiązywania wartości na adresy w danych " "DWARF" -#: src/readelf.c:149 +#: src/readelf.c:150 msgid "Ignored for compatibility (lines always wide)" msgstr "Ignorowane dla zgodności (wiersze są zawsze szerokie)" -#: src/readelf.c:151 +#: src/readelf.c:152 msgid "" "Show compression information for compressed sections (when used with -S); " "decompress section before dumping data (when used with -p or -x)" @@ -4308,40 +4321,40 @@ msgstr "" "używane z opcją -p lub -x)" #. Short description of program. -#: src/readelf.c:156 +#: src/readelf.c:157 msgid "Print information from ELF file in human-readable form." msgstr "Wyświetla informacje z pliku ELF w postaci czytelnej dla człowieka." #. Look up once. -#: src/readelf.c:373 +#: src/readelf.c:395 msgid "yes" msgstr "tak" -#: src/readelf.c:374 +#: src/readelf.c:396 msgid "no" msgstr "nie" -#: src/readelf.c:576 +#: src/readelf.c:598 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "Nieznana sekcja debugowania DWARF „%s”.\n" -#: src/readelf.c:647 src/readelf.c:758 +#: src/readelf.c:669 src/readelf.c:780 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "nie można utworzyć deskryptora ELF: %s" -#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188 +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 #, c-format msgid "cannot determine number of sections: %s" msgstr "nie można określić liczby sekcji: %s" -#: src/readelf.c:672 src/readelf.c:1287 src/readelf.c:1495 +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 #, c-format msgid "cannot get section: %s" msgstr "nie można uzyskać sekcji: %s" -#: src/readelf.c:681 src/readelf.c:1294 src/readelf.c:1502 src/readelf.c:13001 +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 @@ -4350,114 +4363,120 @@ msgstr "nie można uzyskać sekcji: %s" msgid "cannot get section header: %s" msgstr "nie można uzyskać nagłówka sekcji: %s" -#: src/readelf.c:689 +#: src/readelf.c:711 #, c-format msgid "cannot get section name" msgstr "nie można uzyskać nazwy sekcji" -#: src/readelf.c:698 src/readelf.c:6797 src/readelf.c:10854 src/readelf.c:10956 -#: src/readelf.c:11134 +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 #, c-format msgid "cannot get %s content: %s" msgstr "nie można uzyskać zwartości %s: %s" -#: src/readelf.c:714 +#: src/readelf.c:736 #, c-format msgid "cannot create temp file '%s'" msgstr "nie można utworzyć pliku tymczasowego „%s”" -#: src/readelf.c:723 +#: src/readelf.c:745 #, c-format msgid "cannot write section data" msgstr "nie można zapisać danych sekcji" -#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775 +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "błąd podczas zamykania deskryptora ELF: %s" -#: src/readelf.c:736 +#: src/readelf.c:758 #, c-format msgid "error while rewinding file descriptor" msgstr "błąd podczas przewijania deskryptora pliku" -#: src/readelf.c:770 +#: src/readelf.c:792 #, 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:874 +#: src/readelf.c:896 #, c-format msgid "cannot stat input file" msgstr "nie można wykonać stat na pliku wejściowym" -#: src/readelf.c:876 +#: src/readelf.c:898 #, c-format msgid "input file is empty" msgstr "plik wejściowy jest pusty" -#: src/readelf.c:878 +#: src/readelf.c:900 #, c-format msgid "failed reading '%s': %s" msgstr "odczytanie „%s” się nie powiodło: %s" -#: src/readelf.c:907 +#: src/readelf.c:929 #, c-format msgid "No such section '%s' in '%s'" msgstr "Brak sekcji „%s” w „%s”" -#: src/readelf.c:966 +#: src/readelf.c:988 #, c-format msgid "cannot read ELF header: %s" msgstr "nie można odczytać nagłówka ELF: %s" -#: src/readelf.c:974 +#: src/readelf.c:996 #, c-format msgid "cannot create EBL handle" msgstr "nie można utworzyć uchwytu EBL" -#: src/readelf.c:985 +#: src/readelf.c:1007 #, 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:1017 +#: src/readelf.c:1039 #, c-format msgid "cannot read ELF: %s" msgstr "nie można odczytać danych ELF: %s" -#: src/readelf.c:1078 +#: src/readelf.c:1072 +#, fuzzy +#| msgid "cannot get section: %s" +msgid "cannot find section" +msgstr "nie można uzyskać sekcji: %s" + +#: src/readelf.c:1109 msgid "NONE (None)" msgstr "NONE (żaden)" -#: src/readelf.c:1079 +#: src/readelf.c:1110 msgid "REL (Relocatable file)" msgstr "REL (plik relokowalny)" -#: src/readelf.c:1080 +#: src/readelf.c:1111 msgid "EXEC (Executable file)" msgstr "EXEC (plik wykonywalny)" -#: src/readelf.c:1081 +#: src/readelf.c:1112 msgid "DYN (Shared object file)" msgstr "DYN (plik obiektu współdzielonego)" -#: src/readelf.c:1082 +#: src/readelf.c:1113 msgid "CORE (Core file)" msgstr "CORE (plik core)" -#: src/readelf.c:1087 +#: src/readelf.c:1118 #, c-format msgid "OS Specific: (%x)\n" msgstr "Zależny od systemu: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1089 +#: src/readelf.c:1120 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Zależny od procesora: (%x)\n" -#: src/readelf.c:1099 +#: src/readelf.c:1130 msgid "" "ELF Header:\n" " Magic: " @@ -4465,7 +4484,7 @@ msgstr "" "Nagłówek ELF:\n" " Magic: " -#: src/readelf.c:1103 +#: src/readelf.c:1134 #, c-format msgid "" "\n" @@ -4474,123 +4493,123 @@ msgstr "" "\n" " Klasa: %s\n" -#: src/readelf.c:1108 +#: src/readelf.c:1139 #, c-format msgid " Data: %s\n" msgstr " Dane: %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1145 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Wersja Ident: %hhd %s\n" -#: src/readelf.c:1116 src/readelf.c:1138 +#: src/readelf.c:1147 src/readelf.c:1169 msgid "(current)" msgstr "(bieżąca)" -#: src/readelf.c:1120 +#: src/readelf.c:1151 #, c-format msgid " OS/ABI: %s\n" msgstr " System operacyjny/ABI: %s\n" -#: src/readelf.c:1123 +#: src/readelf.c:1154 #, c-format msgid " ABI Version: %hhd\n" msgstr " Wersja ABI: %hhd\n" -#: src/readelf.c:1126 +#: src/readelf.c:1157 msgid " Type: " msgstr " Typ: " -#: src/readelf.c:1131 +#: src/readelf.c:1162 #, c-format msgid " Machine: %s\n" msgstr " Komputer: %s\n" -#: src/readelf.c:1133 +#: src/readelf.c:1164 #, c-format msgid " Machine: : 0x%x\n" msgstr " Komputer: : 0x%x\n" -#: src/readelf.c:1136 +#: src/readelf.c:1167 #, c-format msgid " Version: %d %s\n" msgstr " Wersja: %d %s\n" -#: src/readelf.c:1140 +#: src/readelf.c:1171 #, c-format msgid " Entry point address: %#\n" msgstr " Adres punktu wejściowego: %#\n" -#: src/readelf.c:1143 +#: src/readelf.c:1174 #, c-format msgid " Start of program headers: % %s\n" msgstr " Początek nagłówków programu: % %s\n" -#: src/readelf.c:1144 src/readelf.c:1147 +#: src/readelf.c:1175 src/readelf.c:1178 msgid "(bytes into file)" msgstr "(bajtów w pliku)" -#: src/readelf.c:1146 +#: src/readelf.c:1177 #, c-format msgid " Start of section headers: % %s\n" msgstr " Początek nagłówków sekcji: % %s\n" -#: src/readelf.c:1149 +#: src/readelf.c:1180 #, c-format msgid " Flags: %s\n" msgstr " Flagi: %s\n" -#: src/readelf.c:1152 +#: src/readelf.c:1183 #, c-format msgid " Size of this header: % %s\n" msgstr " Rozmiar tego nagłówka: % %s\n" -#: src/readelf.c:1153 src/readelf.c:1156 src/readelf.c:1173 +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 msgid "(bytes)" msgstr "(bajtów)" -#: src/readelf.c:1155 +#: src/readelf.c:1186 #, c-format msgid " Size of program header entries: % %s\n" msgstr " Rozmiar wpisów nagłówka programu: % %s\n" -#: src/readelf.c:1158 +#: src/readelf.c:1189 #, c-format msgid " Number of program headers entries: %" msgstr " Liczba wpisów nagłówków programu: %" -#: src/readelf.c:1165 +#: src/readelf.c:1196 #, c-format msgid " (% in [0].sh_info)" msgstr " (% w [0].sh_info)" -#: src/readelf.c:1168 src/readelf.c:1185 src/readelf.c:1199 +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 msgid " ([0] not available)" msgstr " ([0] niedostępny)" -#: src/readelf.c:1172 +#: src/readelf.c:1203 #, c-format msgid " Size of section header entries: % %s\n" msgstr " Rozmiar wpisów nagłówka sekcji: % %s\n" -#: src/readelf.c:1175 +#: src/readelf.c:1206 #, c-format msgid " Number of section headers entries: %" msgstr " Liczba wpisów nagłówków sekcji: %" -#: src/readelf.c:1182 +#: src/readelf.c:1213 #, c-format msgid " (% in [0].sh_size)" msgstr " (% w [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1195 +#: src/readelf.c:1226 #, c-format msgid " (% in [0].sh_link)" msgstr " (% w [0].sh_link)" -#: src/readelf.c:1203 +#: src/readelf.c:1234 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4599,7 +4618,7 @@ msgstr "" " Indeks tabeli ciągów nagłówków sekcji: XINDEX%s\n" "\n" -#: src/readelf.c:1207 +#: src/readelf.c:1238 #, c-format msgid "" " Section header string table index: %\n" @@ -4608,12 +4627,12 @@ msgstr "" " Indeks tabeli ciągów nagłówków sekcji: %\n" "\n" -#: src/readelf.c:1253 src/readelf.c:1461 +#: src/readelf.c:1288 src/readelf.c:1496 #, c-format msgid "cannot get number of sections: %s" msgstr "nie można uzyskać liczby sekcji: %s" -#: src/readelf.c:1256 +#: src/readelf.c:1291 #, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4622,16 +4641,16 @@ msgstr "" "Liczba nagłówków sekcji: %zd, rozpoczynających się od offsetu %#:\n" "\n" -#: src/readelf.c:1264 +#: src/readelf.c:1299 #, 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: %s" -#: src/readelf.c:1267 +#: src/readelf.c:1302 msgid "Section Headers:" msgstr "Nagłówki sekcji:" -#: src/readelf.c:1270 +#: src/readelf.c:1305 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4639,7 +4658,7 @@ msgstr "" "[Nr] Nazwa Typ Adres Offset Rozm. ES Flagi Lk " "Inf Al" -#: src/readelf.c:1272 +#: src/readelf.c:1307 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4647,36 +4666,36 @@ msgstr "" "[Nr] Nazwa Typ Adres Offset Rozmiar ES " "Flagi Lk Inf Al" -#: src/readelf.c:1277 +#: src/readelf.c:1312 msgid " [Compression Size Al]" msgstr " [Kompresja Rozmiar Al]" -#: src/readelf.c:1279 +#: src/readelf.c:1314 msgid " [Compression Size Al]" msgstr " [Kompresja Rozmiar Al]" -#: src/readelf.c:1357 +#: src/readelf.c:1392 #, c-format msgid "bad compression header for section %zd: %s" msgstr "błędny nagłówek kompresji dla sekcji %zd: %s" -#: src/readelf.c:1368 +#: src/readelf.c:1403 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "błędny rozmiar kompresji gnu dla sekcji %zd: %s" -#: src/readelf.c:1386 +#: src/readelf.c:1421 msgid "Program Headers:" msgstr "Nagłówki programu:" -#: src/readelf.c:1388 +#: src/readelf.c:1423 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Typ Offset AdresWirt AdresFiz RozmPlik RozmPam Flg " "Wyrównanie" -#: src/readelf.c:1391 +#: src/readelf.c:1426 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4684,12 +4703,12 @@ msgstr "" " Typ Offset AdresWirtualny AdresFizyczny RozmPlik " "RozmPam Flg Wyrównanie" -#: src/readelf.c:1448 +#: src/readelf.c:1483 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Wywołanie interpretera programu: %s]\n" -#: src/readelf.c:1473 +#: src/readelf.c:1508 msgid "" "\n" " Section to Segment mapping:\n" @@ -4699,12 +4718,12 @@ msgstr "" " Mapowanie sekcji do segmentów:\n" " Segment sekcji…" -#: src/readelf.c:1484 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#: src/readelf.c:1519 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:1628 +#: src/readelf.c:1663 #, c-format msgid "" "\n" @@ -4722,7 +4741,7 @@ msgstr[2] "" "\n" "Grupa sekcji COMDAT [%2zu] „%s” z podpisem „%s” zawiera %zu wpisów:\n" -#: src/readelf.c:1633 +#: src/readelf.c:1668 #, c-format msgid "" "\n" @@ -4740,31 +4759,32 @@ msgstr[2] "" "\n" "Grupa sekcji [%2zu] „%s” z podpisem „%s” zawiera %zu wpisów:\n" -#: src/readelf.c:1641 +#: src/readelf.c:1676 msgid "" msgstr "" -#: src/readelf.c:1655 +#: src/readelf.c:1690 msgid "" msgstr "" -#: src/readelf.c:1678 src/readelf.c:2461 src/readelf.c:3563 src/readelf.c:12873 -#: src/readelf.c:12880 src/readelf.c:12924 src/readelf.c:12931 +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 msgid "Couldn't uncompress section" msgstr "Nie można dekompresować sekcji" -#: src/readelf.c:1682 src/readelf.c:2466 src/readelf.c:3567 +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 #, c-format msgid "cannot get section [%zd] header: %s" msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s" -#: src/readelf.c:1851 src/readelf.c:2532 src/readelf.c:2797 src/readelf.c:2872 -#: src/readelf.c:3175 src/readelf.c:3249 src/readelf.c:5570 +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 #, c-format msgid "invalid sh_link value in section %zu" msgstr "nieprawidłowa wartość sh_link w sekcji %zu" -#: src/readelf.c:1854 +#: src/readelf.c:1889 #, c-format msgid "" "\n" @@ -4790,7 +4810,7 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "'%s'\n" -#: src/readelf.c:1867 +#: src/readelf.c:1902 #, fuzzy, c-format #| msgid "" #| "\n" @@ -4824,42 +4844,42 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "'%s'\n" -#: src/readelf.c:1877 +#: src/readelf.c:1912 msgid " Type Value\n" msgstr " Typ Wartość\n" -#: src/readelf.c:1886 +#: src/readelf.c:1921 #, fuzzy #| msgid "cannot get string section data: %s" msgid "cannot get string table by using dynamic segment" msgstr "nie można uzyskać danych sekcji ciągów: %s" -#: src/readelf.c:1925 +#: src/readelf.c:1960 #, c-format msgid "Shared library: [%s]\n" msgstr "Biblioteka współdzielona: [%s]\n" -#: src/readelf.c:1929 +#: src/readelf.c:1964 #, c-format msgid "Library soname: [%s]\n" msgstr "soname biblioteki: [%s]\n" -#: src/readelf.c:1933 +#: src/readelf.c:1968 #, c-format msgid "Library rpath: [%s]\n" msgstr "rpath biblioteki: [%s]\n" -#: src/readelf.c:1937 +#: src/readelf.c:1972 #, c-format msgid "Library runpath: [%s]\n" msgstr "runpath biblioteki: [%s]\n" -#: src/readelf.c:1956 +#: src/readelf.c:1993 #, c-format msgid "% (bytes)\n" msgstr "% (bajtów)\n" -#: src/readelf.c:2070 src/readelf.c:2259 +#: src/readelf.c:2109 src/readelf.c:2298 #, c-format msgid "" "\n" @@ -4868,7 +4888,7 @@ msgstr "" "\n" "Nieprawidłowa tabela symboli pod offsetem %#0\n" -#: src/readelf.c:2087 src/readelf.c:2276 +#: src/readelf.c:2126 src/readelf.c:2315 #, c-format msgid "" "\n" @@ -4897,7 +4917,8 @@ 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:2102 src/readelf.c:2291 +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 #, c-format msgid "" "\n" @@ -4915,30 +4936,40 @@ msgstr[2] "" "\n" "Sekcja relokacji [%2u] „%s” pod offsetem %#0 zawiera %d wpisów:\n" -#: src/readelf.c:2112 +#: src/readelf.c:2151 msgid " Offset Type Value Name\n" msgstr " Offset Typ Wartość Nazwa\n" -#: src/readelf.c:2114 +#: src/readelf.c:2153 msgid " Offset Type Value Name\n" msgstr " Offset Typ Wartość Nazwa\n" -#: src/readelf.c:2167 src/readelf.c:2178 src/readelf.c:2191 src/readelf.c:2212 -#: src/readelf.c:2224 src/readelf.c:2357 src/readelf.c:2369 src/readelf.c:2383 -#: src/readelf.c:2405 src/readelf.c:2418 +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 msgid "" msgstr "" -#: src/readelf.c:2301 +#: src/readelf.c:2340 msgid " Offset Type Value Addend Name\n" msgstr " Offset Typ Wartość Koniec Nazwa\n" -#: src/readelf.c:2303 +#: src/readelf.c:2342 msgid " Offset Type Value Addend Name\n" msgstr "" " Offset Typ Wartość Koniec Nazwa\n" -#: src/readelf.c:2540 +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "błędny symbol dynamiczny" + +#: src/readelf.c:2868 #, c-format msgid "" "\n" @@ -4956,7 +4987,7 @@ msgstr[2] "" "\n" "Tabela symboli [%2u] „%s” zawiera %u wpisów:\n" -#: src/readelf.c:2545 +#: src/readelf.c:2873 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" @@ -4964,33 +4995,27 @@ 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:2553 +#: src/readelf.c:2881 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n" -#: src/readelf.c:2555 +#: src/readelf.c:2883 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " Numer: Wartość Rozm Typ Bind Widoczność Ndx Nazwa\n" -#: src/readelf.c:2575 -#, c-format -msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" - -#: src/readelf.c:2668 -#, c-format -msgid "bad dynamic symbol" -msgstr "błędny symbol dynamiczny" +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "" -#: src/readelf.c:2753 +#: src/readelf.c:3102 msgid "none" msgstr "brak" -#: src/readelf.c:2770 +#: src/readelf.c:3119 msgid "| " msgstr "| " -#: src/readelf.c:2800 +#: src/readelf.c:3149 #, c-format msgid "" "\n" @@ -5016,17 +5041,17 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "„%s”\n" -#: src/readelf.c:2821 +#: src/readelf.c:3170 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Wersja: %hu Plik: %s Licznik: %hu\n" -#: src/readelf.c:2834 +#: src/readelf.c:3183 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Nazwa: %s Flagi: %s Wersja: %hu\n" -#: src/readelf.c:2876 +#: src/readelf.c:3225 #, c-format msgid "" "\n" @@ -5052,19 +5077,19 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "„%s”\n" -#: src/readelf.c:2904 +#: src/readelf.c:3253 #, 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:2919 +#: src/readelf.c:3268 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: Rodzic %d: %s\n" #. Print the header. -#: src/readelf.c:3179 +#: src/readelf.c:3528 #, c-format msgid "" "\n" @@ -5087,15 +5112,15 @@ msgstr[2] "" "Sekcja symboli wersji [%2u] „%s” zawiera %d wpisów:\n" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] „%s”" -#: src/readelf.c:3207 +#: src/readelf.c:3556 msgid " 0 *local* " msgstr " 0 *lokalny* " -#: src/readelf.c:3212 +#: src/readelf.c:3561 msgid " 1 *global* " msgstr " 1 *globalny* " -#: src/readelf.c:3254 +#: src/readelf.c:3603 #, c-format msgid "" "\n" @@ -5126,22 +5151,22 @@ msgstr[2] "" " Adres: %#0* Offset: %#08 Dowiązanie do sekcji: [%2u] " "„%s”\n" -#: src/readelf.c:3276 +#: src/readelf.c:3625 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Długość Liczba % całości Pokrycie\n" -#: src/readelf.c:3278 +#: src/readelf.c:3627 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3285 +#: src/readelf.c:3634 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3298 +#: src/readelf.c:3647 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -5150,37 +5175,37 @@ msgstr "" " Średnia liczba testów: udane wyszukania: %f\n" "\t\t\t nieudane wyszukania: %f\n" -#: src/readelf.c:3316 src/readelf.c:3380 src/readelf.c:3446 +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 #, c-format msgid "cannot get data for section %d: %s" msgstr "nie można uzyskać danych dla sekcji %d: %s" -#: src/readelf.c:3324 +#: src/readelf.c:3673 #, c-format msgid "invalid data in sysv.hash section %d" msgstr "nieprawidłowe dane w sekcji sysv.hash %d" -#: src/readelf.c:3353 +#: src/readelf.c:3702 #, c-format msgid "invalid chain in sysv.hash section %d" msgstr "nieprawidłowy łańcuch w sekcji sysv.hash %d" -#: src/readelf.c:3388 +#: src/readelf.c:3737 #, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "nieprawidłowe dane w sekcji sysv.hash64 %d" -#: src/readelf.c:3419 +#: src/readelf.c:3768 #, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "nieprawidłowy łańcuch w sekcji sysv.hash64 %d" -#: src/readelf.c:3455 +#: src/readelf.c:3804 #, c-format msgid "invalid data in gnu.hash section %d" msgstr "nieprawidłowe dane w sekcji gnu.hash %d" -#: src/readelf.c:3521 +#: src/readelf.c:3870 #, c-format msgid "" " Symbol Bias: %u\n" @@ -5190,7 +5215,7 @@ msgstr "" " Rozmiar maski bitowej: %zu B %%% b ustawionych drugie " "przesunięcie skrótu: %u\n" -#: src/readelf.c:3606 +#: src/readelf.c:3955 #, c-format msgid "" "\n" @@ -5211,7 +5236,7 @@ msgstr[2] "" "Sekcja listy bibliotek [%2zu] „%s” pod offsetem %#0 zawiera %d " "wpisów:\n" -#: src/readelf.c:3620 +#: src/readelf.c:3969 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -5219,7 +5244,7 @@ msgstr "" " Biblioteka Czas Suma k. Wersja " "Flagi" -#: src/readelf.c:3680 +#: src/readelf.c:4029 #, c-format msgid "" "\n" @@ -5229,101 +5254,107 @@ msgstr "" "\n" "Sekcja atrybutów obiektu [%2zu] „%s” % B pod offsetem %#0:\n" -#: src/readelf.c:3697 +#: src/readelf.c:4046 msgid " Owner Size\n" msgstr " Właściciel Rozmiar\n" -#: src/readelf.c:3721 +#: src/readelf.c:4070 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3760 +#: src/readelf.c:4109 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3765 +#: src/readelf.c:4114 #, c-format msgid " File: %11\n" msgstr " Plik: %11\n" -#: src/readelf.c:3814 +#: src/readelf.c:4164 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3817 +#: src/readelf.c:4167 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3820 +#: src/readelf.c:4170 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3830 +#: src/readelf.c:4180 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3833 +#: src/readelf.c:4183 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3903 +#: src/readelf.c:4221 +#, fuzzy +#| msgid "couldn't get shdr for group section: %s" +msgid "Couldn't get data from section" +msgstr "nie można uzyskać shdr dla sekcji grupy: %s" + +#: src/readelf.c:4286 msgid "sprintf failure" msgstr "sprintf się nie powiodło" -#: src/readelf.c:4387 +#: src/readelf.c:4770 msgid "empty block" msgstr "pusty blok" -#: src/readelf.c:4390 +#: src/readelf.c:4773 #, c-format msgid "%zu byte block:" msgstr "blok o %zu B:" -#: src/readelf.c:4868 +#: src/readelf.c:5251 #, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%2] %s \n" -#: src/readelf.c:5028 +#: src/readelf.c:5423 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# zostało użyte z różnymi rozmiarami adresu" -#: src/readelf.c:5035 +#: src/readelf.c:5430 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# zostało użyte z różnymi rozmiarami offsetu" -#: src/readelf.c:5042 +#: src/readelf.c:5437 #, c-format msgid "%s %# used with different base addresses" msgstr "%s %# zostało użyte z różnymi adresami podstawowymi" -#: src/readelf.c:5049 +#: src/readelf.c:5444 #, c-format msgid "%s %# used with different attribute %s and %s" msgstr "%s %# zostało użyte z różnymi atrybutami %s i %s" -#: src/readelf.c:5149 +#: src/readelf.c:5544 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:5157 +#: src/readelf.c:5552 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] … % B…\n" -#: src/readelf.c:5260 +#: src/readelf.c:5658 #, c-format msgid "" "\n" @@ -5334,7 +5365,7 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " [ Kod]\n" -#: src/readelf.c:5268 +#: src/readelf.c:5666 #, c-format msgid "" "\n" @@ -5343,20 +5374,20 @@ msgstr "" "\n" "Sekcja skrótów pod offsetem %:\n" -#: src/readelf.c:5281 +#: src/readelf.c:5679 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** błąd podczas odczytywania skrótu: %s\n" -#: src/readelf.c:5297 +#: src/readelf.c:5695 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] offset: %, potomek: %s, znacznik: %s\n" -#: src/readelf.c:5330 src/readelf.c:5639 src/readelf.c:5806 src/readelf.c:6191 -#: src/readelf.c:6807 src/readelf.c:8562 src/readelf.c:9308 src/readelf.c:9791 -#: src/readelf.c:10042 src/readelf.c:10208 src/readelf.c:10595 -#: src/readelf.c:10655 +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 #, c-format msgid "" "\n" @@ -5365,52 +5396,47 @@ msgstr "" "\n" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" -#: src/readelf.c:5343 -#, c-format -msgid "cannot get .debug_addr section data: %s" -msgstr "nie można uzyskać danych sekcji .debug_addr: %s" - -#: src/readelf.c:5443 src/readelf.c:5467 src/readelf.c:5851 src/readelf.c:9353 +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 #, c-format msgid " Length: %8\n" msgstr " Długość: %8\n" -#: src/readelf.c:5445 src/readelf.c:5482 src/readelf.c:5864 src/readelf.c:9366 +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 #, c-format msgid " DWARF version: %8\n" msgstr " Wersja DWARF: %8\n" -#: src/readelf.c:5446 src/readelf.c:5491 src/readelf.c:5873 src/readelf.c:9375 +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 #, c-format msgid " Address size: %8\n" msgstr " Rozmiar adresu: %8\n" -#: src/readelf.c:5448 src/readelf.c:5501 src/readelf.c:5883 src/readelf.c:9385 +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 #, c-format msgid " Segment size: %8\n" msgstr " Rozmiar segmentu: %8\n" -#: src/readelf.c:5486 src/readelf.c:5868 src/readelf.c:9370 src/readelf.c:10787 +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 #, c-format msgid "Unknown version" msgstr "Nieznana wersja" -#: src/readelf.c:5496 src/readelf.c:5709 src/readelf.c:5878 src/readelf.c:9380 +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 #, c-format msgid "unsupported address size" msgstr "nieobsługiwany rozmiar adresu" -#: src/readelf.c:5507 src/readelf.c:5720 src/readelf.c:5888 src/readelf.c:9390 +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 #, c-format msgid "unsupported segment size" msgstr "nieobsługiwany rozmiar segmentu" -#: src/readelf.c:5560 src/readelf.c:5634 +#: src/readelf.c:5952 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "nie można uzyskać zawartości .debug_aranges: %s" -#: src/readelf.c:5575 +#: src/readelf.c:5967 #, c-format msgid "" "\n" @@ -5428,12 +5454,12 @@ msgstr[2] "" "\n" "Sekcja DWARF [%2zu] „%s” pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:5606 +#: src/readelf.c:5998 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5608 +#: src/readelf.c:6000 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -5441,7 +5467,7 @@ msgstr "" " [%*zu] początek: %0#*, długość: %5, offset CU DIE: " "%6\n" -#: src/readelf.c:5652 src/readelf.c:8589 +#: src/readelf.c:6038 src/readelf.c:8981 #, c-format msgid "" "\n" @@ -5450,13 +5476,13 @@ msgstr "" "\n" "Tabela pod offsetem %zu:\n" -#: src/readelf.c:5656 src/readelf.c:5832 src/readelf.c:6831 src/readelf.c:8600 -#: src/readelf.c:9334 +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "nieprawidłowe dane w sekcji [%zu] „%s”" -#: src/readelf.c:5672 +#: src/readelf.c:6058 #, c-format msgid "" "\n" @@ -5465,27 +5491,27 @@ msgstr "" "\n" " Długość: %6\n" -#: src/readelf.c:5684 +#: src/readelf.c:6070 #, c-format msgid " DWARF version: %6\n" msgstr " Wersja DWARF: %6\n" -#: src/readelf.c:5688 +#: src/readelf.c:6074 #, c-format msgid "unsupported aranges version" msgstr "nieobsługiwana wersja aranges" -#: src/readelf.c:5699 +#: src/readelf.c:6085 #, c-format msgid " CU offset: %6\n" msgstr " Offset CU: %6\n" -#: src/readelf.c:5705 +#: src/readelf.c:6091 #, c-format msgid " Address size: %6\n" msgstr " Offset adresu: %6\n" -#: src/readelf.c:5716 +#: src/readelf.c:6102 #, c-format msgid "" " Segment size: %6\n" @@ -5494,17 +5520,12 @@ msgstr "" " Rozmiar segmentu: %6\n" "\n" -#: src/readelf.c:5771 +#: src/readelf.c:6157 #, c-format msgid " %zu padding bytes\n" msgstr " %zu B wypełnienia\n" -#: src/readelf.c:5815 -#, c-format -msgid "cannot get .debug_rnglists content: %s" -msgstr "nie można uzyskać zawartości .debug_rnglists: %s" - -#: src/readelf.c:5838 src/readelf.c:9340 +#: src/readelf.c:6219 src/readelf.c:9727 #, c-format msgid "" "Table at Offset 0x%:\n" @@ -5513,42 +5534,42 @@ msgstr "" "Tabela pod offsetem 0x%:\n" "\n" -#: src/readelf.c:5893 src/readelf.c:9395 +#: src/readelf.c:6274 src/readelf.c:9782 #, c-format msgid " Offset entries: %8\n" msgstr " Wpisy offsetu: %8\n" -#: src/readelf.c:5909 src/readelf.c:9411 +#: src/readelf.c:6290 src/readelf.c:9798 #, c-format msgid " Unknown CU base: " msgstr " Nieznana podstawa CU: " -#: src/readelf.c:5911 src/readelf.c:9413 +#: src/readelf.c:6292 src/readelf.c:9800 #, c-format msgid " CU [%6] base: " msgstr " Podstawa CU [%6]: " -#: src/readelf.c:5917 src/readelf.c:9419 +#: src/readelf.c:6298 src/readelf.c:9806 #, c-format msgid " Not associated with a CU.\n" msgstr " Brak powiązania z CU.\n" -#: src/readelf.c:5928 src/readelf.c:9430 +#: src/readelf.c:6309 src/readelf.c:9817 #, c-format msgid "too many offset entries for unit length" msgstr "za dużo wpisów offsetu dla długości jednostki" -#: src/readelf.c:5932 src/readelf.c:9434 +#: src/readelf.c:6313 src/readelf.c:9821 #, c-format msgid " Offsets starting at 0x%:\n" msgstr " Offsety zaczynające się w 0x%:\n" -#: src/readelf.c:5984 +#: src/readelf.c:6365 #, c-format msgid "invalid range list data" msgstr "nieprawidłowe dane listy zakresów" -#: src/readelf.c:6169 src/readelf.c:9769 +#: src/readelf.c:6550 src/readelf.c:10156 #, c-format msgid "" " %zu padding bytes\n" @@ -5557,12 +5578,7 @@ msgstr "" " %zu B wypełnienia\n" "\n" -#: src/readelf.c:6186 -#, c-format -msgid "cannot get .debug_ranges content: %s" -msgstr "nie można uzyskać zawartości .debug_ranges: %s" - -#: src/readelf.c:6222 src/readelf.c:9824 +#: src/readelf.c:6598 src/readelf.c:10205 #, c-format msgid "" "\n" @@ -5571,7 +5587,7 @@ msgstr "" "\n" " Nieznana podstawa CU: " -#: src/readelf.c:6224 src/readelf.c:9826 +#: src/readelf.c:6600 src/readelf.c:10207 #, c-format msgid "" "\n" @@ -5580,30 +5596,30 @@ msgstr "" "\n" " Podstawa CU [%6]: " -#: src/readelf.c:6233 src/readelf.c:9852 src/readelf.c:9878 +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] \n" -#: src/readelf.c:6258 src/readelf.c:9962 +#: src/readelf.c:6634 src/readelf.c:10343 msgid "base address" msgstr "adres podstawowy" -#: src/readelf.c:6268 src/readelf.c:9972 +#: src/readelf.c:6644 src/readelf.c:10353 #, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] pusta lista\n" -#: src/readelf.c:6528 +#: src/readelf.c:6908 msgid " \n" msgstr " \n" -#: src/readelf.c:6785 +#: src/readelf.c:7165 #, c-format msgid "cannot get ELF: %s" msgstr "nie można uzyskać ELF: %s" -#: src/readelf.c:6803 +#: src/readelf.c:7189 #, c-format msgid "" "\n" @@ -5612,7 +5628,7 @@ msgstr "" "\n" "Sekcja informacji o ramce wywołania [%2zu] „%s” pod offsetem %#:\n" -#: src/readelf.c:6853 +#: src/readelf.c:7239 #, c-format msgid "" "\n" @@ -5621,65 +5637,65 @@ msgstr "" "\n" " [%6tx] Zerowy koniec\n" -#: src/readelf.c:6954 src/readelf.c:7108 +#: src/readelf.c:7343 src/readelf.c:7497 #, c-format msgid "invalid augmentation length" msgstr "nieprawidłowa długość powiększenia" -#: src/readelf.c:6969 +#: src/readelf.c:7358 msgid "FDE address encoding: " msgstr "Kodowanie adresu FDE: " -#: src/readelf.c:6975 +#: src/readelf.c:7364 msgid "LSDA pointer encoding: " msgstr "Kodowanie wskaźnika LSDA: " -#: src/readelf.c:7085 +#: src/readelf.c:7474 #, c-format msgid " (offset: %#)" msgstr " (offset: %#)" -#: src/readelf.c:7092 +#: src/readelf.c:7481 #, c-format msgid " (end offset: %#)" msgstr " (kończący offset: %#)" -#: src/readelf.c:7129 +#: src/readelf.c:7518 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sWskaźnik LSDA: %#\n" -#: src/readelf.c:7214 +#: src/readelf.c:7603 #, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "DIE [%] nie można uzyskać kodu atrybutu: %s" -#: src/readelf.c:7224 +#: src/readelf.c:7613 #, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "DIE [%] nie można uzyskać formy atrybutu: %s" -#: src/readelf.c:7246 +#: src/readelf.c:7635 #, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "DIE [%] nie można uzyskać wartości atrybutu „%s” (%s): %s" -#: src/readelf.c:7576 +#: src/readelf.c:7965 #, c-format msgid "invalid file (%): %s" msgstr "nieprawidłowy plik (%): %s" -#: src/readelf.c:7580 +#: src/readelf.c:7969 #, c-format msgid "no srcfiles for CU [%]" msgstr "brak plików źródłowych dla CU [%]" -#: src/readelf.c:7584 +#: src/readelf.c:7973 #, c-format msgid "couldn't get DWARF CU: %s" msgstr "nie można uzyskać CU DWARF: %s" -#: src/readelf.c:7899 +#: src/readelf.c:8295 #, c-format msgid "" "\n" @@ -5690,12 +5706,12 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" " [Offset]\n" -#: src/readelf.c:7949 +#: src/readelf.c:8345 #, c-format msgid "cannot get next unit: %s" msgstr "nie można uzyskać następnej jednostki: %s" -#: src/readelf.c:7969 +#: src/readelf.c:8365 #, c-format msgid "" " Type unit at offset %:\n" @@ -5708,7 +5724,7 @@ msgstr "" "%, rozmiar offsetu: %\n" " Podpis typu: %#, offset typu: %# [%]\n" -#: src/readelf.c:7981 +#: src/readelf.c:8377 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5719,38 +5735,38 @@ msgstr "" " Wersja: %, offset sekcji skrótów: %, rozmiar adresu: " "%, rozmiar offsetu: %\n" -#: src/readelf.c:7991 src/readelf.c:8152 +#: src/readelf.c:8387 src/readelf.c:8548 #, c-format msgid " Unit type: %s (%)" msgstr " Typ jednostki: %s (%)" -#: src/readelf.c:8018 +#: src/readelf.c:8414 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "nieznana wersja (%d) lub typ jednostki (%d)" -#: src/readelf.c:8047 +#: src/readelf.c:8443 #, c-format msgid "cannot get DIE offset: %s" msgstr "nie można uzyskać offsetu DIE: %s" -#: src/readelf.c:8056 +#: src/readelf.c:8452 #, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "nie można uzyskać znacznika DIE pod offsetem [%] w sekcji „%s”: %s" -#: src/readelf.c:8092 +#: src/readelf.c:8488 #, c-format msgid "cannot get next DIE: %s\n" msgstr "nie można uzyskać następnego DIE: %s\n" -#: src/readelf.c:8100 +#: src/readelf.c:8496 #, c-format msgid "cannot get next DIE: %s" msgstr "nie można uzyskać następnego DIE: %s" -#: src/readelf.c:8144 +#: src/readelf.c:8540 #, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5761,7 +5777,7 @@ msgstr "" " Wersja: %, offset sekcji skrótów: %, rozmiar adresu: " "%, rozmiar offsetu: %\n" -#: src/readelf.c:8196 +#: src/readelf.c:8592 #, c-format msgid "" "\n" @@ -5772,18 +5788,13 @@ msgstr "" "Sekcja DWARF [%2zu] „%s” pod offsetem %#:\n" "\n" -#: src/readelf.c:8528 +#: src/readelf.c:8924 #, c-format msgid "unknown form: %s" msgstr "nieznana forma: %s" -#: src/readelf.c:8576 -#, 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:8680 +#: src/readelf.c:9072 #, c-format msgid "" "\n" @@ -5816,27 +5827,27 @@ msgstr "" "\n" "Instrukcje:\n" -#: src/readelf.c:8702 +#: src/readelf.c:9094 #, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "nie można obsłużyć wersji .debug_line: %u\n" -#: src/readelf.c:8710 +#: src/readelf.c:9102 #, c-format msgid "cannot handle address size: %u\n" msgstr "nie można obsłużyć rozmiaru adresu: %u\n" -#: src/readelf.c:8718 +#: src/readelf.c:9110 #, c-format msgid "cannot handle segment selector size: %u\n" msgstr "nie można obsłużyć rozmiaru selektora segmentu: %u\n" -#: src/readelf.c:8728 +#: src/readelf.c:9120 #, 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:8743 +#: src/readelf.c:9135 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" @@ -5844,7 +5855,7 @@ msgstr[0] " [%*] %hhu parametr\n" msgstr[1] " [%*] %hhu parametry\n" msgstr[2] " [%*] %hhu parametrów\n" -#: src/readelf.c:8754 +#: src/readelf.c:9146 msgid "" "\n" "Directory table:" @@ -5852,12 +5863,12 @@ msgstr "" "\n" "Tabela katalogu:" -#: src/readelf.c:8760 src/readelf.c:8837 +#: src/readelf.c:9152 src/readelf.c:9229 #, c-format msgid " [" msgstr " [" -#: src/readelf.c:8831 +#: src/readelf.c:9223 msgid "" "\n" "File name table:" @@ -5865,11 +5876,11 @@ msgstr "" "\n" "Tabela nazw plików:" -#: src/readelf.c:8892 +#: src/readelf.c:9284 msgid " Entry Dir Time Size Name" msgstr " Wpis Kat Czas Rozmiar Nazwa" -#: src/readelf.c:8938 +#: src/readelf.c:9330 msgid "" "\n" "No line number statements." @@ -5877,7 +5888,7 @@ msgstr "" "\n" "Brak instrukcji numerów wierszy." -#: src/readelf.c:8942 +#: src/readelf.c:9334 msgid "" "\n" "Line number statements:" @@ -5885,129 +5896,129 @@ msgstr "" "\n" "Instrukcje numerów wierszy:" -#: src/readelf.c:8957 +#: src/readelf.c:9349 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero" -#: src/readelf.c:8991 +#: src/readelf.c:9383 #, c-format msgid " special opcode %u: address+%u = " msgstr " instrukcja specjalna %u: adres+%u = " -#: src/readelf.c:8995 +#: src/readelf.c:9387 #, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr ", op_index = %u, wiersz%+d = %zu\n" -#: src/readelf.c:8998 +#: src/readelf.c:9390 #, c-format msgid ", line%+d = %zu\n" msgstr ", wiersz%+d = %zu\n" -#: src/readelf.c:9016 +#: src/readelf.c:9408 #, c-format msgid " extended opcode %u: " msgstr " instrukcja rozszerzona %u: " -#: src/readelf.c:9021 +#: src/readelf.c:9413 msgid " end of sequence" msgstr " koniec sekwencji" -#: src/readelf.c:9039 +#: src/readelf.c:9431 #, c-format msgid " set address to " msgstr " ustawienie adresu na " -#: src/readelf.c:9067 +#: src/readelf.c:9459 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" " definicja nowego pliku: dir=%u, mtime=%, długość=%, " "nazwa=%s\n" -#: src/readelf.c:9081 +#: src/readelf.c:9473 #, c-format msgid " set discriminator to %u\n" msgstr " ustawienie dyskryminatora na %u\n" -#: src/readelf.c:9108 +#: src/readelf.c:9500 #, c-format msgid " set inlined context %u, function name %s (0x%x)\n" msgstr "" -#: src/readelf.c:9132 +#: src/readelf.c:9524 #, fuzzy, c-format #| msgid "Also show function names" msgid " set function name %s (0x%x)\n" msgstr "Wyświetla także nazwy funkcji" #. Unknown, ignore it. -#: src/readelf.c:9139 +#: src/readelf.c:9531 msgid " unknown opcode" msgstr " nieznana instrukcja" #. Takes no argument. -#: src/readelf.c:9151 +#: src/readelf.c:9543 msgid " copy" msgstr " kopiowanie" -#: src/readelf.c:9162 +#: src/readelf.c:9554 #, c-format msgid " advance address by %u to " msgstr " zwiększenie adresu o %u do " -#: src/readelf.c:9166 src/readelf.c:9227 +#: src/readelf.c:9558 src/readelf.c:9619 #, c-format msgid ", op_index to %u" msgstr ", op_index do %u" -#: src/readelf.c:9178 +#: src/readelf.c:9570 #, c-format msgid " advance line by constant %d to %\n" msgstr " zwiększenie wiersza o stałą %d do %\n" -#: src/readelf.c:9188 +#: src/readelf.c:9580 #, c-format msgid " set file to %\n" msgstr " ustawienie pliku na %\n" -#: src/readelf.c:9199 +#: src/readelf.c:9591 #, c-format msgid " set column to %\n" msgstr " ustawienie kolumny na %\n" -#: src/readelf.c:9206 +#: src/readelf.c:9598 #, c-format msgid " set '%s' to %\n" msgstr " ustawienie „%s” na %\n" #. Takes no argument. -#: src/readelf.c:9212 +#: src/readelf.c:9604 msgid " set basic block flag" msgstr " ustawienie podstawowej flagi bloku" -#: src/readelf.c:9223 +#: src/readelf.c:9615 #, c-format msgid " advance address by constant %u to " msgstr " zwiększenie adresu o stałą %u do " -#: src/readelf.c:9243 +#: src/readelf.c:9635 #, c-format msgid " advance address by fixed value %u to \n" msgstr " zwiększenie adresu o stałą wartość %u do \n" #. Takes no argument. -#: src/readelf.c:9253 +#: src/readelf.c:9645 msgid " set prologue end flag" msgstr " ustawienie flagi końca prologu" #. Takes no argument. -#: src/readelf.c:9258 +#: src/readelf.c:9650 msgid " set epilogue begin flag" msgstr " ustawienie flagi początku epilogu" -#: src/readelf.c:9268 +#: src/readelf.c:9660 #, c-format msgid " set isa to %u\n" msgstr " ustawienie isa na %u\n" @@ -6015,7 +6026,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:9277 +#: src/readelf.c:9669 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" @@ -6023,101 +6034,86 @@ msgstr[0] " nieznana instrukcja z % parametrem:" msgstr[1] " nieznana instrukcja z % parametrami:" msgstr[2] " nieznana instrukcja z % parametrami:" -#: src/readelf.c:9317 -#, c-format -msgid "cannot get .debug_loclists content: %s" -msgstr "nie można uzyskać zawartości .debug_loclists: %s" - -#: src/readelf.c:9483 +#: src/readelf.c:9870 #, c-format msgid " \n" msgstr " \n" -#: src/readelf.c:9523 +#: src/readelf.c:9910 #, c-format msgid "invalid loclists data" msgstr "nieprawidłowe dane loclists" -#: src/readelf.c:9786 -#, c-format -msgid "cannot get .debug_loc content: %s" -msgstr "nie można uzyskać zawartości .debug_log: %s" - -#: src/readelf.c:9999 src/readelf.c:11043 +#: src/readelf.c:10380 src/readelf.c:11425 msgid " \n" msgstr " \n" -#: src/readelf.c:10054 src/readelf.c:10217 -#, c-format -msgid "cannot get macro information section data: %s" -msgstr "nie można uzyskać danych sekcji informacji o makrach: %s" - -#: src/readelf.c:10134 +#: src/readelf.c:10511 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** niezakończony ciąg na końcu sekcji" -#: src/readelf.c:10157 +#: src/readelf.c:10534 #, 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:10258 +#: src/readelf.c:10629 #, c-format msgid " Offset: 0x%\n" msgstr " Offset: 0x%\n" -#: src/readelf.c:10270 +#: src/readelf.c:10641 #, c-format msgid " Version: %\n" msgstr " Wersja: %\n" -#: src/readelf.c:10276 src/readelf.c:11163 +#: src/readelf.c:10647 src/readelf.c:11546 #, c-format msgid " unknown version, cannot parse section\n" msgstr " nieznana wersja, nie można przetworzyć sekcji\n" -#: src/readelf.c:10283 +#: src/readelf.c:10654 #, c-format msgid " Flag: 0x%" msgstr " Flaga: 0x%" -#: src/readelf.c:10312 +#: src/readelf.c:10683 #, c-format msgid " Offset length: %\n" msgstr " Długość offsetu: %\n" -#: src/readelf.c:10320 +#: src/readelf.c:10691 #, c-format msgid " .debug_line offset: 0x%\n" msgstr " Offset .debug_line: 0x%\n" -#: src/readelf.c:10345 +#: src/readelf.c:10716 #, c-format msgid " extension opcode table, % items:\n" msgstr " tabela instrukcji rozszerzenia, % elementów:\n" -#: src/readelf.c:10352 +#: src/readelf.c:10723 #, c-format msgid " [%]" msgstr " [%]" -#: src/readelf.c:10364 +#: src/readelf.c:10735 #, c-format msgid " % arguments:" msgstr " Parametry %:" -#: src/readelf.c:10379 +#: src/readelf.c:10750 #, c-format msgid " no arguments." msgstr " brak parametrów." -#: src/readelf.c:10580 +#: src/readelf.c:10951 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr " [%5d] offset DIE: %6, offset CU DIE: %6, nazwa: %s\n" -#: src/readelf.c:10624 +#: src/readelf.c:11006 #, c-format msgid "" "\n" @@ -6129,42 +6125,37 @@ msgstr "" " %*s Ciąg\n" #. TRANS: the debugstr| prefix makes the string unique. -#: src/readelf.c:10629 +#: src/readelf.c:11011 msgctxt "debugstr" msgid "Offset" msgstr "" -#: src/readelf.c:10639 +#: src/readelf.c:11021 #, c-format msgid " *** error, missing string terminator\n" msgstr " *** błąd, brak znaku kończącego ciąg\n" -#: src/readelf.c:10668 -#, c-format -msgid "cannot get .debug_str_offsets section data: %s" -msgstr "nie można uzyskać danych sekcji .debug_str_offsets: %s" - -#: src/readelf.c:10767 +#: src/readelf.c:11143 #, c-format msgid " Length: %8\n" msgstr " Długość: %8\n" -#: src/readelf.c:10769 +#: src/readelf.c:11145 #, c-format msgid " Offset size: %8\n" msgstr " Rozmiar offsetu: %8\n" -#: src/readelf.c:10783 +#: src/readelf.c:11159 #, c-format msgid " DWARF version: %8\n" msgstr " Wersja DWARF: %8\n" -#: src/readelf.c:10792 +#: src/readelf.c:11168 #, c-format msgid " Padding: %8\n" msgstr " Wypełnienie: %8\n" -#: src/readelf.c:10846 +#: src/readelf.c:11222 #, c-format msgid "" "\n" @@ -6173,7 +6164,7 @@ msgstr "" "\n" "Sekcja tabeli wyszukiwania ramki wywołania [%2zu] „.eh_frame_hdr”:\n" -#: src/readelf.c:10948 +#: src/readelf.c:11324 #, c-format msgid "" "\n" @@ -6182,22 +6173,22 @@ msgstr "" "\n" "Sekcja tabeli obsługiwania wyjątków [%2zu] „.gcc_except_table”:\n" -#: src/readelf.c:10971 +#: src/readelf.c:11347 #, c-format msgid " LPStart encoding: %#x " msgstr " Kodowanie LPStart: %#x " -#: src/readelf.c:10983 +#: src/readelf.c:11359 #, c-format msgid " TType encoding: %#x " msgstr " Kodowanie TType: %#x " -#: src/readelf.c:10998 +#: src/readelf.c:11376 #, c-format msgid " Call site encoding: %#x " msgstr " Kodowanie strony wywołania: %#x " -#: src/readelf.c:11011 +#: src/readelf.c:11391 msgid "" "\n" " Call site table:" @@ -6205,7 +6196,7 @@ msgstr "" "\n" " Tabela strony wywołania:" -#: src/readelf.c:11025 +#: src/readelf.c:11407 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -6218,12 +6209,12 @@ msgstr "" " Lądowisko: %#\n" " Działanie: %u\n" -#: src/readelf.c:11098 +#: src/readelf.c:11480 #, c-format msgid "invalid TType encoding" msgstr "nieprawidłowe kodowanie TType" -#: src/readelf.c:11125 +#: src/readelf.c:11507 #, c-format msgid "" "\n" @@ -6232,37 +6223,43 @@ msgstr "" "\n" "Sekcja GDB [%2zu] „%s” pod offsetem %# zawiera % B:\n" -#: src/readelf.c:11154 +#: src/readelf.c:11536 #, c-format msgid " Version: %\n" msgstr " Wersja: %\n" -#: src/readelf.c:11172 +#: src/readelf.c:11555 #, c-format msgid " CU offset: %#\n" msgstr " offset CU: %#\n" -#: src/readelf.c:11179 +#: src/readelf.c:11562 #, c-format msgid " TU offset: %#\n" msgstr " offset TU: %#\n" -#: src/readelf.c:11186 +#: src/readelf.c:11569 #, c-format msgid " address offset: %#\n" msgstr " offset adresu: %#\n" -#: src/readelf.c:11193 +#: src/readelf.c:11576 #, c-format msgid " symbol offset: %#\n" msgstr " offset symbolu: %#\n" -#: src/readelf.c:11200 +#: src/readelf.c:11586 +#, fuzzy, c-format +#| msgid " constant offset: %#\n" +msgid " shortcut offset: %#\n" +msgstr " offset stałej: %#\n" + +#: src/readelf.c:11594 #, c-format msgid " constant offset: %#\n" msgstr " offset stałej: %#\n" -#: src/readelf.c:11214 +#: src/readelf.c:11608 #, c-format msgid "" "\n" @@ -6271,7 +6268,7 @@ msgstr "" "\n" " Lista CU pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:11239 +#: src/readelf.c:11633 #, c-format msgid "" "\n" @@ -6280,7 +6277,7 @@ msgstr "" "\n" " Lista TU pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:11268 +#: src/readelf.c:11662 #, c-format msgid "" "\n" @@ -6289,7 +6286,7 @@ msgstr "" "\n" " Lista adresów pod offsetem %# zawiera %zu wpisów:\n" -#: src/readelf.c:11300 +#: src/readelf.c:11705 #, c-format msgid "" "\n" @@ -6298,18 +6295,40 @@ msgstr "" "\n" " Tabela symboli pod offsetem %# zawiera %zu gniazd:\n" -#: src/readelf.c:11438 +#: src/readelf.c:11790 +#, fuzzy, c-format +#| msgid "" +#| "\n" +#| " Symbol table at offset %# contains %zu slots:\n" +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +" Tabela symboli pod offsetem %# zawiera %zu gniazd:\n" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "" + +#: src/readelf.c:11886 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s" -#: src/readelf.c:11804 src/readelf.c:12431 src/readelf.c:12541 -#: src/readelf.c:12598 +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 #, c-format msgid "cannot convert core note data: %s" msgstr "nie można konwertować danych notatki core: %s" -#: src/readelf.c:12168 +#: src/readelf.c:12616 #, c-format msgid "" "\n" @@ -6318,21 +6337,21 @@ msgstr "" "\n" "%*s… …" -#: src/readelf.c:12677 +#: src/readelf.c:13118 msgid " Owner Data size Type\n" msgstr " Właściciel Rozmiar danych Typ\n" -#: src/readelf.c:12705 +#: src/readelf.c:13146 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12757 +#: src/readelf.c:13198 #, c-format msgid "cannot get content of note: %s" msgstr "nie można uzyskać zawartości notatki: %s" -#: src/readelf.c:12790 +#: src/readelf.c:13231 #, c-format msgid "" "\n" @@ -6342,7 +6361,7 @@ msgstr "" "Segment notatki [%2zu] „%s” o długości % B pod offsetem " "%#0:\n" -#: src/readelf.c:12813 +#: src/readelf.c:13254 #, c-format msgid "" "\n" @@ -6351,7 +6370,7 @@ msgstr "" "\n" "Segment notatki o długości % B pod offsetem %#0:\n" -#: src/readelf.c:12860 +#: src/readelf.c:13301 #, c-format msgid "" "\n" @@ -6360,12 +6379,12 @@ msgstr "" "\n" "Sekcja [%zu] „%s” nie ma danych do zrzucenia.\n" -#: src/readelf.c:12887 src/readelf.c:12938 +#: src/readelf.c:13328 src/readelf.c:13379 #, 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:12892 +#: src/readelf.c:13333 #, c-format msgid "" "\n" @@ -6375,7 +6394,7 @@ msgstr "" "Segment zrzutu szesnastkowego [%zu] „%s”, % B pod offsetem " "%#0:\n" -#: src/readelf.c:12897 +#: src/readelf.c:13338 #, c-format msgid "" "\n" @@ -6386,7 +6405,7 @@ msgstr "" "Zrzut szesnastkowy sekcji [%zu] „%s”, % B (%zd nieskompresowanych) " "pod offsetem %#0:\n" -#: src/readelf.c:12911 +#: src/readelf.c:13352 #, c-format msgid "" "\n" @@ -6395,7 +6414,7 @@ msgstr "" "\n" "Sekcja [%zu] „%s” nie ma ciągów do zrzucenia.\n" -#: src/readelf.c:12943 +#: src/readelf.c:13384 #, c-format msgid "" "\n" @@ -6404,7 +6423,7 @@ msgstr "" "\n" "Sekcja ciągów [%zu] „%s” zawiera % B pod offsetem %#0:\n" -#: src/readelf.c:12948 +#: src/readelf.c:13389 #, c-format msgid "" "\n" @@ -6415,7 +6434,7 @@ msgstr "" "Sekcja ciągów [%zu] „%s” zawiera % B (%zd nieskompresowanych) pod " "offsetem %#0:\n" -#: src/readelf.c:12996 +#: src/readelf.c:13437 #, c-format msgid "" "\n" @@ -6424,7 +6443,7 @@ msgstr "" "\n" "sekcja [%lu] nie istnieje" -#: src/readelf.c:13026 +#: src/readelf.c:13467 #, c-format msgid "" "\n" @@ -6433,12 +6452,12 @@ msgstr "" "\n" "sekcja „%s” nie istnieje" -#: src/readelf.c:13081 +#: src/readelf.c:13522 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "nie można uzyskać indeksu symboli archiwum „%s”: %s" -#: src/readelf.c:13084 +#: src/readelf.c:13525 #, c-format msgid "" "\n" @@ -6447,7 +6466,7 @@ msgstr "" "\n" "Archiwum „%s” nie ma indeksu symboli\n" -#: src/readelf.c:13088 +#: src/readelf.c:13529 #, c-format msgid "" "\n" @@ -6456,12 +6475,12 @@ msgstr "" "\n" "Indeks archiwum „%s” ma %zu wpisów:\n" -#: src/readelf.c:13106 +#: src/readelf.c:13547 #, 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:13111 +#: src/readelf.c:13552 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Element archiwum „%s” zawiera:\n" @@ -6969,7 +6988,7 @@ msgstr "%s: błąd podczas aktualizowania nagłówka ELF: %s" msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: błąd podczas uzyskiwania shdrstrndx: %s" -#: src/strip.c:1712 src/strip.c:2553 +#: src/strip.c:1712 src/strip.c:2552 #, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: błąd podczas aktualizowania shdrstrndx: %s" @@ -7003,7 +7022,7 @@ msgstr "brak pamięci do utworzenia tabeli ciągów nagłówka sekcji" 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:2469 src/strip.c:2577 +#: src/strip.c:2469 src/strip.c:2574 #, c-format msgid "while writing '%s': %s" msgstr "podczas zapisywania „%s”: %s" @@ -7023,22 +7042,22 @@ msgstr "podczas obliczania sumy kontrolnej dla informacji debugowania" msgid "%s: error while creating ELF header: %s" msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s" -#: src/strip.c:2562 +#: src/strip.c:2560 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: błąd podczas odczytywania pliku: %s" -#: src/strip.c:2602 src/strip.c:2622 +#: src/strip.c:2599 src/strip.c:2619 #, c-format msgid "while writing '%s'" msgstr "podczas zapisywania „%s”" -#: src/strip.c:2659 src/strip.c:2666 +#: 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:2683 src/strip.c:2759 +#: 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”" @@ -7536,7 +7555,7 @@ msgstr "" "source IDENTYFIKATOR-KOPII /NAZWA-PLIKU\n" "source ŚCIEŻKA /NAZWA-PLIKU\n" -#: tests/backtrace.c:483 +#: tests/backtrace.c:491 msgid "Run executable" msgstr "Uruchamia plik wykonywalny" @@ -7548,6 +7567,43 @@ msgstr "Dodatkowo wyświetla nazwy funkcji" msgid "Show instances of inlined functions" msgstr "Wyświetla wystąpienia wstawionych funkcji" +#, 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" + +#, c-format +#~ msgid "cannot get .debug_addr section data: %s" +#~ msgstr "nie można uzyskać danych sekcji .debug_addr: %s" + +#, c-format +#~ msgid "cannot get .debug_rnglists content: %s" +#~ msgstr "nie można uzyskać zawartości .debug_rnglists: %s" + +#, c-format +#~ msgid "cannot get .debug_ranges content: %s" +#~ msgstr "nie można uzyskać zawartości .debug_ranges: %s" + +#, c-format +#~ msgid "cannot get line data section data: %s" +#~ msgstr "nie można uzyskać danych sekcji danych wiersza: %s" + +#, c-format +#~ msgid "cannot get .debug_loclists content: %s" +#~ msgstr "nie można uzyskać zawartości .debug_loclists: %s" + +#, c-format +#~ msgid "cannot get .debug_loc content: %s" +#~ msgstr "nie można uzyskać zawartości .debug_log: %s" + +#, c-format +#~ msgid "cannot get macro information section data: %s" +#~ msgstr "nie można uzyskać danych sekcji informacji o makrach: %s" + +#, c-format +#~ msgid "cannot get .debug_str_offsets section data: %s" +#~ msgstr "nie można uzyskać danych sekcji .debug_str_offsets: %s" + #, c-format #~ msgid "cannot allocate memory" #~ msgstr "nie można przydzielić pamięci" diff --git a/po/quot.sed b/po/quot.sed new file mode 100644 index 0000000000000000000000000000000000000000..0122c46318dc8bc115167fa2c259f8456668f861 --- /dev/null +++ b/po/quot.sed @@ -0,0 +1,6 @@ +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 new file mode 100644 index 0000000000000000000000000000000000000000..8c70dfbf1488022cd0da639ad521ade041d31c27 --- /dev/null +++ b/po/remove-potcdate.sin @@ -0,0 +1,25 @@ +# Sed script that removes the POT-Creation-Date line in the header entry +# from a POT file. +# +# Copyright (C) 2002 Free Software Foundation, Inc. +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without any warranty. +# +# 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/stamp-po b/po/stamp-po new file mode 100644 index 0000000000000000000000000000000000000000..9788f70238c91894045d22366fa941580826c3c1 --- /dev/null +++ b/po/stamp-po @@ -0,0 +1 @@ +timestamp diff --git a/po/uk.gmo b/po/uk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b05985961776c123cde393b2a68f144788988f88 Binary files /dev/null and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 199041a447314086eab35ca9d433e94050a59035..e502e5bd3e59d2296f81b7400f703e4c36d19a00 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: elfutils\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2022-11-02 13:30+0100\n" +"POT-Creation-Date: 2023-11-03 18:23+0100\n" "PO-Revision-Date: 2020-03-28 14:59+0200\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -53,18 +53,18 @@ msgstr "" "початкових кодах. Умовами ліцензування програми НЕ передбачено жодних " "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n" -#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11754 +#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202 #: src/unstrip.c:311 #, c-format msgid "memory exhausted" msgstr "пам’ять вичерпано" -#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:51 +#: libasm/asm_error.c:64 libdw/dwarf_error.c:57 libdwfl/libdwflP.h:47 #: libelf/elf_error.c:59 msgid "no error" msgstr "без помилок" -#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:53 +#: libasm/asm_error.c:65 libdw/dwarf_error.c:67 libdwfl/libdwflP.h:49 #: libelf/elf_error.c:90 msgid "out of memory" msgstr "нестача пам'яті" @@ -101,7 +101,7 @@ msgstr "помилка під час спроби виведення даних" msgid "no backend support available" msgstr "підтримки серверів не передбачено" -#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:52 +#: libasm/asm_error.c:82 libdw/dwarf_error.c:58 libdwfl/libdwflP.h:48 #: libelf/elf_error.c:62 msgid "unknown error" msgstr "невідома помилка" @@ -118,7 +118,7 @@ msgstr "некоректне значення розміру сторінки « msgid "invalid character '\\%o' at line %d; ignored" msgstr "некоректне значення розміру сторінки «%s»: проігноровано" -#: libcpu/i386_parse.y:553 +#: libcpu/i386_parse.y:555 #, fuzzy, c-format #| msgid "while reading linker script '%s': %s at line %d" msgid "while reading i386 CPU description: %s at line %d" @@ -232,7 +232,7 @@ msgstr "некоректна версія DWARF" msgid "invalid directory index" msgstr "некоректний покажчик каталогу" -#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:73 +#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:69 msgid "address out of range" msgstr "некоректна адреса" @@ -260,7 +260,7 @@ msgstr "некоректний номер рядка" msgid "invalid address range index" msgstr "некоректний індекс діапазону адрес" -#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:74 +#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:70 msgid "no matching address range" msgstr "не виявлено відповідного діапазону адрес" @@ -371,166 +371,166 @@ msgstr "Бракує пам'яті" msgid "No modules recognized in core file" msgstr "Не вдалося виявити модулі у файлі core" -#: libdwfl/libdwflP.h:54 +#: libdwfl/libdwflP.h:50 msgid "See errno" msgstr "Див. errno" -#: libdwfl/libdwflP.h:55 +#: libdwfl/libdwflP.h:51 msgid "See elf_errno" msgstr "Див. elf_errno" -#: libdwfl/libdwflP.h:56 +#: libdwfl/libdwflP.h:52 msgid "See dwarf_errno" msgstr "Див. dwarf_errno" -#: libdwfl/libdwflP.h:57 +#: libdwfl/libdwflP.h:53 msgid "See ebl_errno (XXX missing)" msgstr "Див. ebl_errno (не виявлено XXX)" -#: libdwfl/libdwflP.h:58 +#: libdwfl/libdwflP.h:54 msgid "gzip decompression failed" msgstr "Помилка під час спроби видобування з gzip" -#: libdwfl/libdwflP.h:59 +#: libdwfl/libdwflP.h:55 msgid "bzip2 decompression failed" msgstr "Помилка під час спроби видобування з bzip2" -#: libdwfl/libdwflP.h:60 +#: libdwfl/libdwflP.h:56 msgid "LZMA decompression failed" msgstr "Помилка під час спроби видобування з LZMA" -#: libdwfl/libdwflP.h:61 +#: libdwfl/libdwflP.h:57 #, fuzzy msgid "zstd decompression failed" msgstr "Помилка під час спроби видобування з gzip" -#: libdwfl/libdwflP.h:62 +#: libdwfl/libdwflP.h:58 msgid "no support library found for machine" msgstr "у системі не виявлено бібліотеки підтримки" -#: libdwfl/libdwflP.h:63 +#: libdwfl/libdwflP.h:59 msgid "Callbacks missing for ET_REL file" msgstr "Немає зворотних викликів для файла ET_REL" -#: libdwfl/libdwflP.h:64 +#: libdwfl/libdwflP.h:60 msgid "Unsupported relocation type" msgstr "Непідтримуваний тип пересування" -#: libdwfl/libdwflP.h:65 +#: libdwfl/libdwflP.h:61 msgid "r_offset is bogus" msgstr "r_offset є фіктивним" -#: libdwfl/libdwflP.h:66 libelf/elf_error.c:114 libelf/elf_error.c:174 +#: libdwfl/libdwflP.h:62 libelf/elf_error.c:114 libelf/elf_error.c:174 msgid "offset out of range" msgstr "перевищення можливого зміщення" -#: libdwfl/libdwflP.h:67 +#: libdwfl/libdwflP.h:63 msgid "relocation refers to undefined symbol" msgstr "пересування посилається на невизначений символ." -#: libdwfl/libdwflP.h:68 +#: libdwfl/libdwflP.h:64 msgid "Callback returned failure" msgstr "Зворотним викликом повернуто помилку" -#: libdwfl/libdwflP.h:69 +#: libdwfl/libdwflP.h:65 msgid "No DWARF information found" msgstr "Не виявлено відомостей DWARF" -#: libdwfl/libdwflP.h:70 +#: libdwfl/libdwflP.h:66 msgid "No symbol table found" msgstr "Не виявлено таблиці символів" -#: libdwfl/libdwflP.h:71 +#: libdwfl/libdwflP.h:67 msgid "No ELF program headers" msgstr "Немає заголовків програми ELF" -#: libdwfl/libdwflP.h:72 +#: libdwfl/libdwflP.h:68 msgid "address range overlaps an existing module" msgstr "діапазон адрес перекриває існуючий модуль" -#: libdwfl/libdwflP.h:75 +#: libdwfl/libdwflP.h:71 msgid "image truncated" msgstr "образ обрізано" -#: libdwfl/libdwflP.h:76 +#: libdwfl/libdwflP.h:72 msgid "ELF file opened" msgstr "Відкритий файл ELF" -#: libdwfl/libdwflP.h:77 +#: libdwfl/libdwflP.h:73 msgid "not a valid ELF file" msgstr "не є коректним файлом ELF" -#: libdwfl/libdwflP.h:78 +#: libdwfl/libdwflP.h:74 msgid "cannot handle DWARF type description" msgstr "не вдалося обробити опис типу DWARF" -#: libdwfl/libdwflP.h:79 +#: libdwfl/libdwflP.h:75 msgid "ELF file does not match build ID" msgstr "Файл ELF не відповідає ідентифікатору збирання" -#: libdwfl/libdwflP.h:80 +#: libdwfl/libdwflP.h:76 msgid "corrupt .gnu.prelink_undo section data" msgstr "дані розділу «.gnu.prelink_undo» пошкоджено" -#: libdwfl/libdwflP.h:81 +#: libdwfl/libdwflP.h:77 msgid "Internal error due to ebl" msgstr "Внутрішня помилка через ebl" -#: libdwfl/libdwflP.h:82 +#: libdwfl/libdwflP.h:78 msgid "Missing data in core file" msgstr "У файлі ядра не вистачає даних" -#: libdwfl/libdwflP.h:83 +#: libdwfl/libdwflP.h:79 msgid "Invalid register" msgstr "Некоректний регістр" -#: libdwfl/libdwflP.h:84 +#: libdwfl/libdwflP.h:80 #, fuzzy #| msgid "no reference value" msgid "Unknown register value" msgstr "немає значення для порівняння" -#: libdwfl/libdwflP.h:85 +#: libdwfl/libdwflP.h:81 msgid "Error reading process memory" msgstr "Помилка під час спроби читання пам’яті процесу" -#: libdwfl/libdwflP.h:86 +#: libdwfl/libdwflP.h:82 msgid "Couldn't find architecture of any ELF" msgstr "Не вдалося знайти хоч якусь архітектуру ELF" -#: libdwfl/libdwflP.h:87 +#: libdwfl/libdwflP.h:83 msgid "Error parsing /proc filesystem" msgstr "Помилка під час спроби обробки файлової системи /proc" -#: libdwfl/libdwflP.h:88 +#: libdwfl/libdwflP.h:84 msgid "Invalid DWARF" msgstr "Некоректний запис DWARF" -#: libdwfl/libdwflP.h:89 +#: libdwfl/libdwflP.h:85 msgid "Unsupported DWARF" msgstr "Непідтримуваний запис DWARF" -#: libdwfl/libdwflP.h:90 +#: libdwfl/libdwflP.h:86 msgid "Unable to find more threads" msgstr "Не вдалося знайти додаткові потоки" -#: libdwfl/libdwflP.h:91 +#: libdwfl/libdwflP.h:87 msgid "Dwfl already has attached state" msgstr "Dwfl уже перебуває у стані долучення до процесу" -#: libdwfl/libdwflP.h:92 +#: libdwfl/libdwflP.h:88 msgid "Dwfl has no attached state" msgstr "Dwfl не перебуває у стані долучення до процесу" -#: libdwfl/libdwflP.h:93 +#: libdwfl/libdwflP.h:89 msgid "Unwinding not supported for this architecture" msgstr "Для цієї архітектури розгортання не передбачено" -#: libdwfl/libdwflP.h:94 +#: libdwfl/libdwflP.h:90 msgid "Invalid argument" msgstr "Некоректний аргумент" -#: libdwfl/libdwflP.h:95 +#: libdwfl/libdwflP.h:91 msgid "Not an ET_CORE ELF file" msgstr "Не є файлом ET_CORE ELF" @@ -541,7 +541,7 @@ msgstr "Немає сервера" #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83 -#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81 +#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81 msgid "" msgstr "<невідомо>" @@ -635,7 +635,7 @@ msgstr "некоректна розмірність вхідного парам msgid "invalid size of destination operand" msgstr "некоректна розмірність вихідного параметра" -#: libelf/elf_error.c:86 src/readelf.c:6378 +#: libelf/elf_error.c:86 src/readelf.c:6758 #, c-format msgid "invalid encoding" msgstr "некоректне кодування" @@ -720,8 +720,8 @@ msgstr "невідповідність полів data/scn" msgid "invalid section header" msgstr "некоректний заголовок розділу" -#: libelf/elf_error.c:190 src/readelf.c:10266 src/readelf.c:10866 -#: src/readelf.c:10967 src/readelf.c:11149 +#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242 +#: src/readelf.c:11343 src/readelf.c:11531 #, c-format msgid "invalid data" msgstr "некоректні дані" @@ -847,47 +847,53 @@ msgstr "" msgid "Show demangled symbols (ARG is always ignored)" msgstr "Виводити розшифровані символи (АРГ завжди ігнорується)" -#: src/addr2line.c:77 +#: src/addr2line.c:76 +#, fuzzy +#| msgid "Show demangled symbols (ARG is always ignored)" +msgid "Show demangled symbols" +msgstr "Виводити розшифровані символи (АРГ завжди ігнорується)" + +#: src/addr2line.c:78 msgid "Print all information on one line, and indent inlines" msgstr "Вивести усі дані у один рядок і додати відступи до перенесених рядків" -#: src/addr2line.c:79 +#: src/addr2line.c:80 #, fuzzy #| msgid "Show absolute file names using compilation directory" msgid "Show relative file names without compilation directory" msgstr "Показувати абсолютні назви файлів з використанням каталогу збирання" -#: src/addr2line.c:81 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 +#: src/addr2line.c:82 src/elfcmp.c:69 src/findtextrel.c:65 src/nm.c:99 #: src/strings.c:77 msgid "Miscellaneous:" msgstr "Інше:" #. Short description of program. -#: src/addr2line.c:89 +#: src/addr2line.c:90 msgid "" "Locate source files and line information for ADDRs (in a.out by default)." msgstr "Шукати АДРЕСИ у файлах кодів та даних про рядки (типово, у a.out)." #. Strings for arguments in help texts. -#: src/addr2line.c:93 +#: src/addr2line.c:94 msgid "[ADDR...]" msgstr "[АДРЕСА...]" -#: src/addr2line.c:526 +#: src/addr2line.c:530 msgid "Section syntax requires exactly one module" msgstr "Синтаксис розділів вимагає точного одного модуля" -#: src/addr2line.c:548 +#: src/addr2line.c:552 #, c-format msgid "offset %# lies outside section '%s'" msgstr "зміщення %# розташовано поза межами розділу «%s»" -#: src/addr2line.c:658 +#: src/addr2line.c:662 #, c-format msgid "cannot find symbol '%s'" msgstr "не вдалося знайти символ «%s»" -#: src/addr2line.c:663 +#: src/addr2line.c:667 #, c-format msgid "offset %# lies outside contents of '%s'" msgstr "зміщення %# розташовано поза межами вмісту «%s»" @@ -1378,8 +1384,8 @@ msgid "Suppress some error output (counterpart to --verbose)" msgstr "" #. Strings for arguments in help texts. -#: src/elfclassify.c:979 src/elfcompress.c:1358 src/elflint.c:76 -#: src/readelf.c:160 +#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77 +#: src/readelf.c:161 msgid "FILE..." msgstr "ФАЙЛ..." @@ -1647,48 +1653,59 @@ msgstr "не вдалося отримати вміст розділу %zu: %s" msgid "cannot get relocation: %s" msgstr "не вдалося отримати пересування: %s" -#: src/elfcompress.c:117 src/strip.c:305 src/unstrip.c:116 +#: src/elfcompress.c:128 src/strip.c:305 src/unstrip.c:116 #, c-format msgid "-o option specified twice" msgstr "параметр -o вказано двічі" -#: src/elfcompress.c:124 +#: src/elfcompress.c:135 #, c-format msgid "-t option specified twice" msgstr "параметр -t вказано двічі" -#: src/elfcompress.c:133 +#: src/elfcompress.c:147 +#, c-format +msgid "ZSTD support is not enabled" +msgstr "" + +#: src/elfcompress.c:150 #, c-format msgid "unknown compression type '%s'" msgstr "невідомий тип стиснення «%s»" #. We need at least one input file. -#: src/elfcompress.c:145 src/elfcompress.c:1369 +#: src/elfcompress.c:162 src/elfcompress.c:1447 #, c-format msgid "No input file given" msgstr "Не надано файла вхідних даних" -#: src/elfcompress.c:151 src/elfcompress.c:1373 +#: src/elfcompress.c:168 src/elfcompress.c:1451 #, c-format msgid "Only one input file allowed together with '-o'" msgstr "З параметром «-o» можна використовувати лише один файл вхідних даних" -#: src/elfcompress.c:1331 +#: src/elfcompress.c:1408 msgid "Place (de)compressed output into FILE" msgstr "Помістити результати розпакування або стискання до ФАЙЛа" -#: src/elfcompress.c:1334 +#: src/elfcompress.c:1411 +#, fuzzy +#| msgid "" +#| "What type of compression to apply. TYPE can be 'none' (decompress), " +#| "'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or " +#| "'zlib-gnu' (.zdebug GNU style compression, 'gnu' is an alias)" msgid "" "What type of compression to apply. TYPE can be 'none' (decompress), " -"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-" -"gnu' (.zdebug GNU style compression, 'gnu' is an alias)" +"'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-" +"gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD " +"compression)" msgstr "" "Визначає тип стискання, який слід застосувати. ТИПом може бути " "«none» (розпакувати), «zlib» (стискання ELF ZLIB, типовий варіант, інша " "назва — «zlib-gabi») або «zlib-gnu» (стискання у стилі GNU .zdebug, інша " "назва — «gnu»)" -#: src/elfcompress.c:1337 +#: src/elfcompress.c:1415 msgid "" "SECTION name to (de)compress, SECTION is an extended wildcard pattern " "(defaults to '.?(z)debug*')" @@ -1696,12 +1713,12 @@ msgstr "" "назва РОЗДІЛу для розпакування або стискання, РОЗДІЛ є розширеним взірцем із " "замінниками (типове значення -- «.?(z)debug*»)" -#: src/elfcompress.c:1340 +#: src/elfcompress.c:1418 msgid "Print a message for each section being (de)compressed" msgstr "" "Вивести повідомлення для кожного розділу, який розпаковується чи стискається" -#: src/elfcompress.c:1343 +#: src/elfcompress.c:1421 msgid "" "Force compression of section even if it would become larger or update/" "rewrite the file even if no section would be (de)compressed" @@ -1709,32 +1726,32 @@ msgstr "" "Примусове стискання розділу, навіть якщо він стане більшим, або оновлення чи " "перезапис файла, навіть якщо жодного розділу не буде розпаковано або стиснено" -#: src/elfcompress.c:1346 src/strip.c:92 +#: src/elfcompress.c:1424 src/strip.c:92 msgid "Relax a few rules to handle slightly broken ELF files" msgstr "" "Знехтувати декількома правилами для обробки трохи пошкоджених файлів ELF" -#: src/elfcompress.c:1349 +#: src/elfcompress.c:1427 msgid "Be silent when a section cannot be compressed" msgstr "Не сповіщати, якщо розділ неможливо стиснути" -#: src/elfcompress.c:1359 +#: src/elfcompress.c:1437 msgid "Compress or decompress sections in an ELF file." msgstr "Стиснути або розпакувати розділи у файлі ELF." -#: src/elflint.c:62 +#: src/elflint.c:63 msgid "Be extremely strict, flag level 2 features." msgstr "Висока строгість, увімкнути можливості рівня 2." -#: src/elflint.c:63 +#: src/elflint.c:64 msgid "Do not print anything if successful" msgstr "Не виводити ніяких даних у разі успіху" -#: src/elflint.c:64 +#: src/elflint.c:65 msgid "Binary is a separate debuginfo file" msgstr "Бінарний файл є окремим файлом debuginfo" -#: src/elflint.c:66 +#: src/elflint.c:67 msgid "" "Binary has been created with GNU ld and is therefore known to be broken in " "certain ways" @@ -1743,173 +1760,173 @@ msgstr "" "певної міри неправильним" #. Short description of program. -#: src/elflint.c:72 +#: src/elflint.c:73 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec." msgstr "" "Педантична перевірка файлів ELF на сумісність зі специфікаціями gABI/psABI." -#: src/elflint.c:153 src/readelf.c:391 +#: src/elflint.c:154 src/readelf.c:413 #, c-format msgid "cannot open input file '%s'" msgstr "не вдалося відкрити вхідний файл «%s»" -#: src/elflint.c:160 +#: src/elflint.c:161 #, c-format msgid "cannot generate Elf descriptor for '%s': %s\n" msgstr "не вдалося створити дескриптор Elf для «%s»: %s\n" -#: src/elflint.c:179 +#: src/elflint.c:180 #, c-format msgid "error while closing Elf descriptor: %s\n" msgstr "помилка під час спроби закриття дескриптора Elf: %s\n" -#: src/elflint.c:183 +#: src/elflint.c:184 msgid "No errors" msgstr "Без помилок" -#: src/elflint.c:218 src/readelf.c:603 +#: src/elflint.c:219 src/readelf.c:625 msgid "Missing file name.\n" msgstr "Не вказано назви файла.\n" -#: src/elflint.c:283 +#: src/elflint.c:284 #, c-format msgid " error while freeing sub-ELF descriptor: %s\n" msgstr " помилка під час спроби вивільнення дескриптора суб-ELF: %s\n" #. We cannot do anything. -#: src/elflint.c:291 +#: src/elflint.c:292 #, c-format msgid "Not an ELF file - it has the wrong magic bytes at the start\n" msgstr "Не є файлом ELF. Виявлено помилкові магічні байти на початку файла\n" -#: src/elflint.c:356 +#: src/elflint.c:358 #, c-format msgid "e_ident[%d] == %d is no known class\n" msgstr "e_ident[%d] == %d не є відомим класом\n" -#: src/elflint.c:361 +#: src/elflint.c:363 #, c-format msgid "e_ident[%d] == %d is no known data encoding\n" msgstr "e_ident[%d] == %d не є відомим кодуванням даних\n" -#: src/elflint.c:365 +#: src/elflint.c:367 #, c-format msgid "unknown ELF header version number e_ident[%d] == %d\n" msgstr "невідомий номер версії заголовка ELF e_ident[%d] == %d\n" -#: src/elflint.c:373 +#: src/elflint.c:375 #, c-format msgid "unsupported OS ABI e_ident[%d] == '%s'\n" msgstr "непідтримуване ABI ОС e_ident[%d] == «%s»\n" -#: src/elflint.c:379 +#: src/elflint.c:381 #, c-format msgid "unsupported ABI version e_ident[%d] == %d\n" msgstr "непідтримувана версія ABI e_ident[%d] == %d\n" -#: src/elflint.c:384 +#: src/elflint.c:386 #, c-format msgid "e_ident[%zu] is not zero\n" msgstr "e_ident[%zu] не дорівнює нулеві\n" -#: src/elflint.c:389 +#: src/elflint.c:391 #, c-format msgid "unknown object file type %d\n" msgstr "невідомий тип об’єктних файлів %d\n" -#: src/elflint.c:396 +#: src/elflint.c:398 #, c-format msgid "unknown machine type %d\n" msgstr "невідомий тип архітектури %d\n" -#: src/elflint.c:400 +#: src/elflint.c:402 #, c-format msgid "unknown object file version\n" msgstr "невідома версія об’єктних файлів\n" -#: src/elflint.c:406 +#: src/elflint.c:408 #, c-format msgid "invalid program header offset\n" msgstr "некоректне зміщення заголовка програми\n" -#: src/elflint.c:408 +#: src/elflint.c:410 #, c-format msgid "executables and DSOs cannot have zero program header offset\n" msgstr "" "виконувані файли і DSO не можуть містити заголовка програми з нульовим " "зміщенням\n" -#: src/elflint.c:412 +#: src/elflint.c:414 #, c-format msgid "invalid number of program header entries\n" msgstr "некоректна кількість записів заголовків програми\n" -#: src/elflint.c:420 +#: src/elflint.c:422 #, c-format msgid "invalid section header table offset\n" msgstr "некоректне зміщення таблиці заголовків розділів\n" -#: src/elflint.c:423 +#: src/elflint.c:425 #, c-format msgid "section header table must be present\n" msgstr "має бути вказано таблицю заголовків розділів\n" -#: src/elflint.c:437 +#: src/elflint.c:439 #, c-format msgid "invalid number of section header table entries\n" msgstr "некоректна кількість записів таблиці заголовків розділів\n" -#: src/elflint.c:454 +#: src/elflint.c:456 #, c-format msgid "invalid section header index\n" msgstr "некоректний індекс заголовка розділу\n" -#: src/elflint.c:472 +#: src/elflint.c:474 #, c-format msgid "Can only check %u headers, shnum was %u\n" msgstr "Можна перевірити лише %u заголовків, значенням же shnum було %u\n" -#: src/elflint.c:486 +#: src/elflint.c:488 #, c-format msgid "invalid number of program header table entries\n" msgstr "некоректна кількість записів таблиці заголовків програми\n" -#: src/elflint.c:503 +#: src/elflint.c:505 #, c-format msgid "Can only check %u headers, phnum was %u\n" msgstr "Можна перевірити лише %u заголовків, значенням же phnum було %u\n" -#: src/elflint.c:508 +#: src/elflint.c:510 #, c-format msgid "invalid machine flags: %s\n" msgstr "некоректні прапорці архітектури: %s\n" -#: src/elflint.c:515 src/elflint.c:532 +#: src/elflint.c:517 src/elflint.c:534 #, c-format msgid "invalid ELF header size: %hd\n" msgstr "некоректний розмір заголовка ELF: %hd\n" -#: src/elflint.c:518 src/elflint.c:535 +#: src/elflint.c:520 src/elflint.c:537 #, c-format msgid "invalid program header size: %hd\n" msgstr "некоректний розмір заголовка програми: %hd\n" -#: src/elflint.c:521 src/elflint.c:538 +#: src/elflint.c:523 src/elflint.c:540 #, c-format msgid "invalid program header position or size\n" msgstr "некоректне розташування або розмір заголовка програми\n" -#: src/elflint.c:524 src/elflint.c:541 +#: src/elflint.c:526 src/elflint.c:543 #, c-format msgid "invalid section header size: %hd\n" msgstr "некоректний розмір заголовка розділу: %hd\n" -#: src/elflint.c:527 src/elflint.c:544 +#: src/elflint.c:529 src/elflint.c:546 #, c-format msgid "invalid section header position or size\n" msgstr "некоректне розташування або розмір заголовка розділу\n" -#: src/elflint.c:589 +#: src/elflint.c:591 #, c-format msgid "" "section [%2d] '%s': section with SHF_GROUP flag set not part of a section " @@ -1918,7 +1935,7 @@ msgstr "" "розділ [%2d] «%s»: розділ з встановленим прапорцем SHF_GROUP не є частиною " "групи розділів\n" -#: src/elflint.c:593 +#: src/elflint.c:595 #, c-format msgid "" "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n" @@ -1926,14 +1943,14 @@ msgstr "" "розділ [%2d] «%s»: групу розділів [%2zu] «%s» мало бути визначено до розділу-" "елемента цієї групи\n" -#: src/elflint.c:609 src/elflint.c:1497 src/elflint.c:1548 src/elflint.c:1654 -#: src/elflint.c:1990 src/elflint.c:2316 src/elflint.c:2942 src/elflint.c:3105 -#: src/elflint.c:3253 src/elflint.c:3455 src/elflint.c:4464 +#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610 +#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981 +#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511 #, c-format msgid "section [%2d] '%s': cannot get section data\n" msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу\n" -#: src/elflint.c:622 src/elflint.c:1661 +#: src/elflint.c:624 src/elflint.c:1699 #, c-format msgid "" "section [%2d] '%s': referenced as string table for section [%2d] '%s' but " @@ -1942,7 +1959,7 @@ msgstr "" "розділ [%2d] «%s»: надано посилання на таблицю рядків розділу [%2d] «%s», " "але типом даних не є SHT_STRTAB\n" -#: src/elflint.c:645 +#: src/elflint.c:647 #, c-format msgid "" "section [%2d] '%s': symbol table cannot have more than one extended index " @@ -1951,12 +1968,12 @@ msgstr "" "розділ [%2d] «%s»: у таблиці символів не може бути більше одного розширеного " "розділу покажчика\n" -#: src/elflint.c:657 +#: src/elflint.c:659 #, c-format msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n" msgstr "розділ [%2u] «%s»: розмірність запису не відповідає ElfXX_Sym\n" -#: src/elflint.c:661 +#: src/elflint.c:663 #, c-format msgid "" "section [%2u] '%s': number of local entries in 'st_info' larger than table " @@ -1965,33 +1982,33 @@ msgstr "" "розділ [%2u] «%s»: кількість локальних записів у «st_info» перевищує розмір " "таблиці\n" -#: src/elflint.c:670 +#: src/elflint.c:672 #, c-format msgid "section [%2d] '%s': cannot get symbol %d: %s\n" msgstr "розділ [%2d] «%s»: не вдалося отримати символ %d: %s\n" -#: src/elflint.c:675 src/elflint.c:678 src/elflint.c:681 src/elflint.c:684 -#: src/elflint.c:687 src/elflint.c:690 +#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686 +#: src/elflint.c:689 src/elflint.c:692 #, c-format msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n" msgstr "розділ [%2d] «%s»: «%s» у нульовому записі не є нулем\n" -#: src/elflint.c:693 +#: src/elflint.c:695 #, c-format msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n" msgstr "розділ [%2d] «%s»: XINDEX для нульового запису не є нулем\n" -#: src/elflint.c:703 +#: src/elflint.c:705 #, c-format msgid "section [%2d] '%s': cannot get symbol %zu: %s\n" msgstr "розділ [%2d] «%s»: не вдалося отримати символ %zu: %s\n" -#: src/elflint.c:712 +#: src/elflint.c:714 #, c-format msgid "section [%2d] '%s': symbol %zu: invalid name value\n" msgstr "розділ [%2d] «%s»: символ %zu: некоректне значення назви\n" -#: src/elflint.c:727 +#: src/elflint.c:729 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): too large section index but no extended " @@ -2000,7 +2017,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: занадто великий покажчик розділу за умови, що " "не визначено розділу розширеного покажчика розділів\n" -#: src/elflint.c:733 +#: src/elflint.c:735 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit " @@ -2010,29 +2027,29 @@ msgstr "" "відповідає st_shndx (%)\n" #. || sym->st_shndx > SHN_HIRESERVE always false -#: src/elflint.c:745 +#: src/elflint.c:747 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n" msgstr "розділ [%2d] «%s»: символ %zu: некоректний індекс розділу\n" -#: src/elflint.c:753 +#: src/elflint.c:755 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n" msgstr "розділ [%2d] «%s»: символ %zu: невідомий тип\n" -#: src/elflint.c:759 +#: src/elflint.c:761 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n" msgstr "розділ [%2d] «%s»: символ %zu: невідома прив’язка символу\n" -#: src/elflint.c:764 +#: src/elflint.c:766 #, 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:772 +#: src/elflint.c:774 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable " @@ -2041,7 +2058,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: COMMON можна використовувати лише у файлах, " "придатних до пересування\n" -#: src/elflint.c:776 +#: src/elflint.c:778 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n" @@ -2049,7 +2066,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: використання локальних символів COMMON " "позбавлене сенсу\n" -#: src/elflint.c:780 +#: src/elflint.c:782 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n" @@ -2057,13 +2074,13 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: використання функції у розділі COMMON " "позбавлене сенсу\n" -#: src/elflint.c:831 +#: src/elflint.c:833 #, 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:837 src/elflint.c:862 src/elflint.c:911 +#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced " @@ -2072,7 +2089,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu не повністю відповідає розділу, на який " "посилається, [%2d] «%s»\n" -#: src/elflint.c:846 +#: src/elflint.c:848 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not " @@ -2081,7 +2098,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: для розділу посилання [%2d] «%s» не " "встановлено прапорець SHF_TLS\n" -#: src/elflint.c:856 src/elflint.c:904 +#: src/elflint.c:858 src/elflint.c:906 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced " @@ -2090,7 +2107,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: значення st_value поза межами розділу " "посилання, [%2d] «%s»\n" -#: src/elflint.c:883 +#: src/elflint.c:885 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header " @@ -2098,7 +2115,7 @@ msgid "" msgstr "" "розділ [%2d] «%s»: символ %zu: символ TLS без запису заголовка програми TLS\n" -#: src/elflint.c:889 +#: src/elflint.c:891 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program " @@ -2107,7 +2124,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: маємо символ TLS, але не вдалося отримати " "запис заголовка програми TLS\n" -#: src/elflint.c:897 +#: src/elflint.c:899 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section " @@ -2116,7 +2133,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: значення st_value перед розділом посилання, " "[%2d] «%s»\n" -#: src/elflint.c:924 +#: src/elflint.c:926 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in " @@ -2125,7 +2142,7 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: у sh_info описано локальний символ поза " "діапазоном\n" -#: src/elflint.c:931 +#: src/elflint.c:933 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range " @@ -2134,12 +2151,12 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: у sh_info описано нелокальний символ поза " "діапазоном\n" -#: src/elflint.c:938 +#: src/elflint.c:940 #, fuzzy, c-format msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n" msgstr "розділ [%2d] «%s»: символ %zu: нелокальний символ розділу\n" -#: src/elflint.c:988 +#: src/elflint.c:990 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section " @@ -2148,7 +2165,7 @@ msgstr "" "розділ [%2d] «%s»: символ _GLOBAL_OFFSET_TABLE_ посилається на помилковий " "розділ, [%2d]\n" -#: src/elflint.c:995 +#: src/elflint.c:997 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] " @@ -2160,7 +2177,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:1011 +#: src/elflint.c:1013 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %# does not " @@ -2169,7 +2186,7 @@ msgstr "" "розділ [%2d] «%s»: значення символу _GLOBAL_OFFSET_TABLE_ %# не " "відповідає адресі розділу %s %#\n" -#: src/elflint.c:1018 +#: src/elflint.c:1020 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size % does not " @@ -2178,7 +2195,7 @@ msgstr "" "розділ [%2d] «%s»: розмір символу _GLOBAL_OFFSET_TABLE_ % не " "відповідає розміру розділу %s %\n" -#: src/elflint.c:1026 +#: src/elflint.c:1028 #, c-format msgid "" "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got " @@ -2187,7 +2204,7 @@ msgstr "" "розділ [%2d] «%s»: виявлено символ _GLOBAL_OFFSET_TABLE_, але не виявлено " "розділу .got\n" -#: src/elflint.c:1042 +#: src/elflint.c:1044 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC_ symbol value %# does not match dynamic " @@ -2196,7 +2213,7 @@ msgstr "" "розділ [%2d] «%s»: значення символу _DYNAMIC_ %# не відповідає " "адресі динамічного сегмента %#\n" -#: src/elflint.c:1049 +#: src/elflint.c:1051 #, c-format msgid "" "section [%2d] '%s': _DYNAMIC symbol size % does not match dynamic " @@ -2205,7 +2222,7 @@ msgstr "" "розділ [%2d] «%s»: розмір символу _DYNAMIC % не відповідає розміру " "динамічного сегмента %\n" -#: src/elflint.c:1062 +#: src/elflint.c:1064 #, fuzzy, c-format msgid "" "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-" @@ -2214,29 +2231,29 @@ msgstr "" "розділ [%2d] «%s»: символ %zu: символ у динамічній таблиці символів з " "нетиповою видимістю\n" -#: src/elflint.c:1066 +#: src/elflint.c:1068 #, 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:1104 +#: src/elflint.c:1106 #, c-format msgid "section [%2d] '%s': cannot get section data.\n" msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу.\n" -#: src/elflint.c:1120 +#: src/elflint.c:1122 #, c-format msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n" msgstr "розділ [%2d] «%s»: для цього розділу RELA використано DT_RELCOUNT\n" -#: src/elflint.c:1131 src/elflint.c:1184 +#: src/elflint.c:1133 src/elflint.c:1186 #, 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:1156 src/elflint.c:1209 +#: src/elflint.c:1158 src/elflint.c:1211 #, c-format msgid "" "section [%2d] '%s': relative relocations after index %d as specified by " @@ -2245,7 +2262,7 @@ msgstr "" "розділ [%2d] «%s»: відносні пересування після позиції %d, вказаної за " "допомогою DT_RELCOUNT\n" -#: src/elflint.c:1162 src/elflint.c:1215 +#: src/elflint.c:1164 src/elflint.c:1217 #, c-format msgid "" "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT " @@ -2254,27 +2271,27 @@ msgstr "" "розділ [%2d] «%s»: безвідносне пересування на позиції %zu; DT_RELCOUNT " "визначено %d відносних пересування\n" -#: src/elflint.c:1174 +#: src/elflint.c:1176 #, c-format msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n" msgstr "розділ [%2d] «%s»: для цього розділу REL використано DT_RELACOUNT\n" -#: src/elflint.c:1257 +#: src/elflint.c:1259 #, c-format msgid "section [%2d] '%s': invalid destination section index\n" msgstr "розділ [%2d] «%s»: некоректний індекс розділу призначення\n" -#: src/elflint.c:1269 +#: src/elflint.c:1271 #, c-format msgid "section [%2d] '%s': invalid destination section type\n" msgstr "розділ [%2d] «%s»: некоректний тип розділу призначення\n" -#: src/elflint.c:1277 +#: src/elflint.c:1279 #, c-format msgid "section [%2d] '%s': sh_info should be zero\n" msgstr "розділ [%2d] «%s»: sh_info має бути нульовим\n" -#: src/elflint.c:1285 +#: src/elflint.c:1287 #, c-format msgid "" "section [%2d] '%s': no relocations for merge-able string sections possible\n" @@ -2282,25 +2299,19 @@ msgstr "" "розділ [%2d] «%s»: неможливі пересування для розділів рядків, які непридатні " "до об'єднання\n" -#: src/elflint.c:1293 -#, c-format -msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n" -msgstr "" -"розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Rela\n" - -#: src/elflint.c:1353 +#: src/elflint.c:1365 #, c-format msgid "text relocation flag set but there is no read-only segment\n" msgstr "" "встановлено прапорець пересування тексту, але сегмент придатний лише до " "читання\n" -#: src/elflint.c:1380 +#: src/elflint.c:1392 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid type\n" msgstr "розділ [%2d] «%s»: пересування %zu: некоректний тип\n" -#: src/elflint.c:1388 +#: src/elflint.c:1400 #, c-format msgid "" "section [%2d] '%s': relocation %zu: relocation type invalid for the file " @@ -2309,12 +2320,12 @@ msgstr "" "розділ [%2d] «%s»: пересування %zu: некоректний тип пересування для типу " "файла\n" -#: src/elflint.c:1396 +#: src/elflint.c:1408 #, c-format msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n" msgstr "розділ [%2d] «%s»: пересування %zu: некоректний індекс символу\n" -#: src/elflint.c:1414 +#: src/elflint.c:1426 #, c-format msgid "" "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can " @@ -2323,12 +2334,12 @@ msgstr "" "розділ [%2d] «%s»: пересування %zu: з %s можна використовувати лише символ " "«_GLOBAL_OFFSET_TABLE_»\n" -#: src/elflint.c:1431 +#: src/elflint.c:1443 #, c-format msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n" msgstr "розділ [%2d] «%s»: пересування %zu: зміщення за межі діапазону\n" -#: src/elflint.c:1446 +#: src/elflint.c:1458 #, c-format msgid "" "section [%2d] '%s': relocation %zu: copy relocation against symbol of type " @@ -2337,7 +2348,7 @@ msgstr "" "розділ [%2d] «%s»: пересування %zu: пересування копіювання для символу типу " "%s\n" -#: src/elflint.c:1467 +#: src/elflint.c:1479 #, c-format msgid "" "section [%2d] '%s': relocation %zu: read-only section modified but text " @@ -2346,22 +2357,22 @@ msgstr "" "розділ [%2d] «%s»: пересування %zu: змінено придатний лише для читання " "розділ, але не встановлено прапорець пересування тексту\n" -#: src/elflint.c:1482 +#: src/elflint.c:1494 #, c-format msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n" msgstr "розділ [%2d] «%s»: пересування завантажених і незавантажених даних\n" -#: src/elflint.c:1522 src/elflint.c:1573 +#: src/elflint.c:1534 src/elflint.c:1585 #, c-format msgid "section [%2d] '%s': cannot get relocation %zu: %s\n" msgstr "розділ [%2d] «%s»: не вдалося отримати зміщення %zu: %s\n" -#: src/elflint.c:1649 +#: src/elflint.c:1687 #, c-format msgid "more than one dynamic section present\n" msgstr "вказано більше одного динамічного розділу\n" -#: src/elflint.c:1667 +#: src/elflint.c:1705 #, c-format msgid "" "section [%2d]: referenced as string table for section [%2d] '%s' but section " @@ -2370,46 +2381,46 @@ msgstr "" "розділ [%2d]: надано посилання на таблицю рядків розділу [%2d] «%s», але " "значення посилання на розділ є некоректним\n" -#: src/elflint.c:1675 +#: src/elflint.c:1713 #, c-format msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n" msgstr "" "розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Dyn\n" -#: src/elflint.c:1680 src/elflint.c:1969 +#: src/elflint.c:1718 src/elflint.c:2008 #, c-format msgid "section [%2d] '%s': sh_info not zero\n" msgstr "розділ [%2d] «%s»: sh_info не є нульовим\n" -#: src/elflint.c:1690 +#: src/elflint.c:1728 #, c-format msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n" msgstr "" "розділ [%2d] «%s»: не вдалося отримати запис динамічного розділу %zu: %s\n" -#: src/elflint.c:1698 +#: src/elflint.c:1736 #, 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:1705 +#: src/elflint.c:1743 #, c-format msgid "section [%2d] '%s': entry %zu: unknown tag\n" msgstr "розділ [%2d] «%s»: запис %zu: невідома мітка\n" -#: src/elflint.c:1716 +#: src/elflint.c:1754 #, 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:1726 +#: src/elflint.c:1764 #, c-format msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n" msgstr "розділ [%2d] «%s»: запис %zu: використано мітку рівня 2 %s\n" -#: src/elflint.c:1744 +#: src/elflint.c:1782 #, c-format msgid "" "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n" @@ -2417,7 +2428,7 @@ msgstr "" "розділ [%2d] «%s»: запис %zu: значенням DT_PLTREL має бути DT_REL або " "DT_RELA\n" -#: src/elflint.c:1757 +#: src/elflint.c:1795 #, c-format msgid "" "section [%2d] '%s': entry %zu: pointer does not match address of section " @@ -2426,7 +2437,7 @@ msgstr "" "розділ [%2d] «%s»: розділ %zu: вказівник не відповідає адресі розділу [%2d] " "«%s», на яку посилається sh_link\n" -#: src/elflint.c:1800 +#: src/elflint.c:1839 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n" @@ -2434,7 +2445,7 @@ msgstr "" "розділ [%2d] «%s»: запис %zu: значення %s має вказувати на завантажений " "сегмент\n" -#: src/elflint.c:1815 +#: src/elflint.c:1854 #, c-format msgid "" "section [%2d] '%s': entry %zu: %s value must be valid offset in section " @@ -2443,48 +2454,48 @@ msgstr "" "розділ [%2d] «%s»: запис %zu: значенням %s має бути коректне зміщення у " "розділі [%2d] «%s»\n" -#: src/elflint.c:1835 src/elflint.c:1863 +#: src/elflint.c:1874 src/elflint.c:1902 #, c-format msgid "section [%2d] '%s': contains %s entry but not %s\n" msgstr "розділ [%2d] «%s»: містить запис %s, але не %s\n" -#: src/elflint.c:1847 +#: src/elflint.c:1886 #, c-format msgid "section [%2d] '%s': mandatory tag %s not present\n" msgstr "розділ [%2d] «%s»: немає обов’язкової мітки %s\n" -#: src/elflint.c:1856 +#: src/elflint.c:1895 #, c-format msgid "section [%2d] '%s': no hash section present\n" msgstr "розділ [%2d] «%s»: не виявлено розділу хешів\n" -#: src/elflint.c:1871 src/elflint.c:1878 +#: src/elflint.c:1910 src/elflint.c:1917 #, 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:1888 src/elflint.c:1892 +#: src/elflint.c:1927 src/elflint.c:1931 #, c-format msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n" msgstr "" "розділ [%2d] «%s»: у DSO, позначеному на кроці попереднього компонування, " "немає мітки %s\n" -#: src/elflint.c:1898 +#: src/elflint.c:1937 #, c-format msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n" msgstr "" "розділ [%2d] «%s»: під час попереднього компонування як залежність позначено " "файл, який не є файлом DSO\n" -#: src/elflint.c:1909 src/elflint.c:1913 src/elflint.c:1917 src/elflint.c:1921 +#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960 #, c-format msgid "section [%2d] '%s': %s tag missing in prelinked executable\n" msgstr "" "розділ [%2d] «%s»: у попередньо скомпонованому виконуваному файлі не " "міститься мітки %s\n" -#: src/elflint.c:1933 +#: src/elflint.c:1972 #, c-format msgid "" "section [%2d] '%s': only relocatable files can have extended section index\n" @@ -2492,7 +2503,7 @@ msgstr "" "розділ [%2d] «%s»: розширений розділ покажчика можуть мати лише файли, " "придатні до пересування\n" -#: src/elflint.c:1943 +#: src/elflint.c:1982 #, c-format msgid "" "section [%2d] '%s': extended section index section not for symbol table\n" @@ -2500,29 +2511,29 @@ msgstr "" "розділ [%2d] «%s»: розділ розширеного покажчика розділів не призначено для " "таблиць символів\n" -#: src/elflint.c:1947 +#: src/elflint.c:1986 #, 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:1952 +#: src/elflint.c:1991 #, c-format msgid "cannot get data for symbol section\n" msgstr "не вдалося отримати дані для розділу символів\n" -#: src/elflint.c:1955 +#: src/elflint.c:1994 #, c-format msgid "section [%2d] '%s': entry size does not match Elf32_Word\n" msgstr "розділ [%2d] «%s»: розмірність запису не відповідає Elf32_Word\n" -#: src/elflint.c:1964 +#: src/elflint.c:2003 #, c-format msgid "section [%2d] '%s': extended index table too small for symbol table\n" msgstr "" "розділ [%2d] «%s»: розширена таблиця покажчика замала для таблиці символів\n" -#: src/elflint.c:1979 +#: src/elflint.c:2018 #, c-format msgid "" "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to " @@ -2531,24 +2542,24 @@ msgstr "" "розділ [%2d] «%s»: розширений покажчик розділів у розділі [%2zu] «%s» " "посилається на ту саму таблицю розділів\n" -#: src/elflint.c:1997 +#: src/elflint.c:2036 #, c-format msgid "symbol 0 should have zero extended section index\n" msgstr "символу 0 має відповідати нульовий індекс розширеного розділу\n" -#: src/elflint.c:2009 +#: src/elflint.c:2048 #, c-format msgid "cannot get data for symbol %zu\n" msgstr "не вдалося отримати дані для символу %zu\n" -#: src/elflint.c:2014 +#: src/elflint.c:2053 #, c-format msgid "extended section index is % but symbol index is not XINDEX\n" msgstr "" "індекс розширеного розділу дорівнює %, але індекс символу не є " "XINDEX\n" -#: src/elflint.c:2031 src/elflint.c:2088 +#: src/elflint.c:2070 src/elflint.c:2127 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n" @@ -2556,43 +2567,43 @@ msgstr "" "розділ [%2d] «%s»: розділ таблиці хешів занадто малий (розмір %ld, мало бути " "— %ld)\n" -#: src/elflint.c:2045 src/elflint.c:2102 +#: src/elflint.c:2084 src/elflint.c:2141 #, c-format msgid "section [%2d] '%s': chain array too large\n" msgstr "розділ [%2d] «%s»: масив ланцюжка занадто великий\n" -#: src/elflint.c:2059 src/elflint.c:2116 +#: src/elflint.c:2098 src/elflint.c:2155 #, c-format msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n" msgstr "" "розділ [%2d] «%s»: посилання на хеш блоку %zu лежить поза межами діапазону\n" -#: src/elflint.c:2069 +#: src/elflint.c:2108 #, c-format msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n" msgstr "" "розділ [%2d] «%s»: посилання ланцюжка хешів %zu лежить поза межами " "діапазону\n" -#: src/elflint.c:2126 +#: src/elflint.c:2165 #, c-format msgid "section [%2d] '%s': hash chain reference % out of bounds\n" msgstr "" "розділ [%2d] «%s»: посилання ланцюжка хешів % лежить поза межами " "діапазону\n" -#: src/elflint.c:2139 +#: src/elflint.c:2178 #, c-format msgid "section [%2d] '%s': not enough data\n" msgstr "розділ [%2d] «%s»: недостатньо даних\n" -#: src/elflint.c:2151 +#: src/elflint.c:2190 #, 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:2167 +#: src/elflint.c:2206 #, c-format msgid "" "section [%2d] '%s': hash table section is too small (is %ld, expected at " @@ -2601,12 +2612,12 @@ msgstr "" "розділ [%2d] «%s»: розділ таблиці хешів є надто малим (маємо %ld, мало бути " "принаймні %ld)\n" -#: src/elflint.c:2176 +#: src/elflint.c:2215 #, c-format msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n" msgstr "розділ [%2d] «%s»: зсув 2-ої функції хешування занадто великий: %u\n" -#: src/elflint.c:2210 +#: src/elflint.c:2249 #, c-format msgid "" "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n" @@ -2614,7 +2625,7 @@ msgstr "" "розділ [%2d] '%s': ланцюжок хешів для блоку %zu розташовано нижче за позицію " "відхилення індексу символу\n" -#: src/elflint.c:2231 +#: src/elflint.c:2270 #, c-format msgid "" "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is " @@ -2623,7 +2634,7 @@ msgstr "" "розділ [%2d] «%s»: символ %u, на який посилається ланцюжок у блоці %zu не " "визначено\n" -#: src/elflint.c:2244 +#: src/elflint.c:2283 #, c-format msgid "" "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n" @@ -2631,7 +2642,7 @@ msgstr "" "розділ [%2d] «%s»: значення хешу для символу %u у ланцюжку для блоку %zu є " "помилковим\n" -#: src/elflint.c:2253 +#: src/elflint.c:2292 #, c-format msgid "" "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n" @@ -2639,14 +2650,14 @@ msgstr "" "розділ [%2d] «%s»: індекс маски для символу %u у ланцюжку для блоку %zu є " "помилковим\n" -#: src/elflint.c:2283 +#: src/elflint.c:2322 #, c-format msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n" msgstr "" "розділ [%2d] «%s»: ланцюжок хешів для блоку %zu лежить поза межами " "діапазону\n" -#: src/elflint.c:2288 +#: src/elflint.c:2327 #, c-format msgid "" "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n" @@ -2654,43 +2665,43 @@ msgstr "" "розділ [%2d] «%s»: посилання на символ у ланцюжку для блоку %zu лежить поза " "межами діапазону\n" -#: src/elflint.c:2294 +#: src/elflint.c:2333 #, c-format msgid "section [%2d] '%s': bitmask does not match names in the hash table\n" msgstr "розділ [%2d] «%s»: бітова маска не відповідає назвам у таблиці хешів\n" -#: src/elflint.c:2307 +#: src/elflint.c:2346 #, c-format msgid "section [%2d] '%s': relocatable files cannot have hash tables\n" msgstr "" "розділ [%2d] «%s»: придатні до пересування файли не можуть містити таблиць " "хешів\n" -#: src/elflint.c:2325 +#: src/elflint.c:2364 #, c-format msgid "section [%2d] '%s': hash table not for dynamic symbol table\n" msgstr "" "розділ [%2d] «%s»: таблицю хешів не призначено для зберігання таблиці " "динамічних символів\n" -#: src/elflint.c:2329 +#: src/elflint.c:2368 #, 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:2339 +#: src/elflint.c:2378 #, c-format msgid "section [%2d] '%s': hash table entry size incorrect\n" msgstr "розділ [%2d] «%s»: розмірність запису таблиці хешів є некоректною\n" -#: src/elflint.c:2344 +#: src/elflint.c:2383 #, c-format msgid "section [%2d] '%s': not marked to be allocated\n" msgstr "розділ [%2d] «%s»: не позначено для пересування\n" -#: src/elflint.c:2349 +#: src/elflint.c:2388 #, c-format msgid "" "section [%2d] '%s': hash table has not even room for initial administrative " @@ -2699,27 +2710,27 @@ msgstr "" "розділ [%2d] «%s»: у таблиці хешів виявлено незвичайне розташування " "початкових адміністративних записів\n" -#: src/elflint.c:2398 +#: src/elflint.c:2437 #, 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:2422 src/elflint.c:2487 src/elflint.c:2522 +#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561 #, c-format msgid "hash section [%2zu] '%s' does not contain enough data\n" msgstr "розділ хешу [%2zu] «%s» містить недостатньо даних\n" -#: src/elflint.c:2443 +#: src/elflint.c:2482 #, c-format msgid "hash section [%2zu] '%s' has zero bit mask words\n" msgstr "розділ хешу [%2zu] «%s» містить нульові слова бітової маски\n" -#: src/elflint.c:2454 src/elflint.c:2498 src/elflint.c:2535 +#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574 #, c-format msgid "hash section [%2zu] '%s' uses too much data\n" msgstr "розділ хешу [%2zu] «%s» використовує надто багато даних\n" -#: src/elflint.c:2469 +#: src/elflint.c:2508 #, c-format msgid "" "hash section [%2zu] '%s' invalid symbol index % (max_nsyms: " @@ -2728,17 +2739,17 @@ msgstr "" "розділ хешу [%2zu] «%s» некоректний індекс символу % (макс. к-ть " "символів: %, кількість записів: %\n" -#: src/elflint.c:2556 +#: src/elflint.c:2595 #, c-format msgid "hash section [%2zu] '%s' invalid sh_entsize\n" msgstr "розділ хешу [%2zu] «%s» некоректне значення sh_entsize\n" -#: src/elflint.c:2566 src/elflint.c:2570 +#: src/elflint.c:2605 src/elflint.c:2609 #, c-format msgid "section [%2zu] '%s': reference to symbol index 0\n" msgstr "розділ [%2zu] «%s»: посилання на індекс символів 0\n" -#: src/elflint.c:2577 +#: src/elflint.c:2616 #, c-format msgid "" "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash " @@ -2747,7 +2758,7 @@ msgstr "" "виявлено посилання на символ %d у новій таблиці хешів у [%2zu] «%s», але " "його немає у старій таблиці хешів у [%2zu] «%s»\n" -#: src/elflint.c:2589 +#: src/elflint.c:2628 #, c-format msgid "" "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash " @@ -2756,12 +2767,12 @@ msgstr "" "виявлено посилання на символ %d у старій таблиці хешів у [%2zu] «%s», але " "його немає у новій таблиці хешів у [%2zu] «%s»\n" -#: src/elflint.c:2605 +#: src/elflint.c:2644 #, c-format msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n" msgstr "розділ [%2d] «%s»: ненульове значення sh_%s для розділу NULL\n" -#: src/elflint.c:2625 +#: src/elflint.c:2664 #, c-format msgid "" "section [%2d] '%s': section groups only allowed in relocatable object files\n" @@ -2769,95 +2780,95 @@ msgstr "" "розділ [%2d] «%s»: групи розділів передбачено лише для придатних до " "пересування об’єктних файлах\n" -#: src/elflint.c:2636 +#: src/elflint.c:2675 #, c-format msgid "section [%2d] '%s': cannot get symbol table: %s\n" msgstr "розділ [%2d] «%s»: не вдалося отримати таблицю символів: %s\n" -#: src/elflint.c:2641 +#: src/elflint.c:2680 #, 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:2647 +#: src/elflint.c:2686 #, c-format msgid "section [%2d] '%s': invalid symbol index in sh_info\n" msgstr "розділ [%2d] «%s»: некоректний індекс символу у sh_info\n" -#: src/elflint.c:2652 +#: src/elflint.c:2691 #, c-format msgid "section [%2d] '%s': sh_flags not zero\n" msgstr "розділ [%2d] «%s»: sh_flags не є нульовим\n" -#: src/elflint.c:2659 +#: src/elflint.c:2698 #, c-format msgid "section [%2d] '%s': cannot get symbol for signature\n" msgstr "розділ [%2d] «%s»: не вдалося отримати символ для підпису\n" -#: src/elflint.c:2663 +#: src/elflint.c:2702 #, c-format msgid "section [%2d] '%s': cannot get symbol name for signature\n" msgstr "розділ [%2d] «%s»: не вдалося отримати назву символу для підпису\n" -#: src/elflint.c:2668 +#: src/elflint.c:2707 #, c-format msgid "section [%2d] '%s': signature symbol cannot be empty string\n" msgstr "розділ [%2d] «%s»: символ підпису не може бути порожнім рядком\n" -#: src/elflint.c:2674 +#: src/elflint.c:2713 #, c-format msgid "section [%2d] '%s': sh_flags not set correctly\n" msgstr "розділ [%2d] «%s»: для sh_flags встановлено помилкове значення\n" -#: src/elflint.c:2680 +#: src/elflint.c:2719 #, c-format msgid "section [%2d] '%s': cannot get data: %s\n" msgstr "розділ [%2d] «%s»: не вдалося отримати дані: %s\n" -#: src/elflint.c:2689 +#: src/elflint.c:2728 #, 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:2695 +#: src/elflint.c:2734 #, c-format msgid "section [%2d] '%s': section group without flags word\n" msgstr "розділ [%2d] «%s»: група розділів без значення типу word прапорців\n" -#: src/elflint.c:2703 +#: src/elflint.c:2742 #, c-format msgid "section [%2d] '%s': section group without member\n" msgstr "розділ [%2d] «%s»: група розділів без елементів\n" -#: src/elflint.c:2707 +#: src/elflint.c:2746 #, c-format msgid "section [%2d] '%s': section group with only one member\n" msgstr "розділ [%2d] «%s»: група розділів, що містить лише один елемент\n" -#: src/elflint.c:2718 +#: src/elflint.c:2757 #, c-format msgid "section [%2d] '%s': unknown section group flags\n" msgstr "розділ [%2d] «%s»: невідомі прапорці групи розділів\n" -#: src/elflint.c:2730 +#: src/elflint.c:2769 #, c-format msgid "section [%2d] '%s': section index %zu out of range\n" msgstr "розділ [%2d] «%s»: індекс розділу %zu поза межами діапазону\n" -#: src/elflint.c:2739 +#: src/elflint.c:2778 #, c-format msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n" msgstr "" "розділ [%2d] «%s»: не вдалося отримати заголовок розділу для елемента %zu: " "%s\n" -#: src/elflint.c:2746 +#: src/elflint.c:2785 #, c-format msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n" msgstr "розділ [%2d] «%s»: група розділів містить іншу групу [%2d] «%s»\n" -#: src/elflint.c:2752 +#: src/elflint.c:2791 #, c-format msgid "" "section [%2d] '%s': element %zu references section [%2d] '%s' without " @@ -2866,12 +2877,12 @@ msgstr "" "розділ [%2d] «%s»: елемент %zu посилається на розділ [%2d] «%s» без " "встановленого прапорця SHF_GROUP\n" -#: src/elflint.c:2759 +#: src/elflint.c:2798 #, c-format msgid "section [%2d] '%s' is contained in more than one section group\n" msgstr "розділ [%2d] «%s» міститься у більше ніж одній групі розділів\n" -#: src/elflint.c:2956 +#: src/elflint.c:2995 #, c-format msgid "" "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no " @@ -2880,7 +2891,7 @@ msgstr "" "розділ [%2d] «%s» посилається у sh_link на розділ [%2d] «%s», який не має " "динамічної таблиці символів\n" -#: src/elflint.c:2968 +#: src/elflint.c:3007 #, c-format msgid "" "section [%2d] '%s' has different number of entries than symbol table [%2d] " @@ -2889,28 +2900,28 @@ msgstr "" "кількість записів у розділі [%2d] «%s» відрізняється від кількості у таблиці " "символів [%2d] «%s»\n" -#: src/elflint.c:2984 +#: src/elflint.c:3023 #, c-format msgid "section [%2d] '%s': symbol %d: cannot read version data\n" msgstr "розділ [%2d] «%s»: символ %d: не вдалося прочитати дані щодо версії\n" -#: src/elflint.c:3000 +#: src/elflint.c:3039 #, c-format msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n" msgstr "" "розділ [%2d] «%s»: символ %d: локальний символ у загальному контексті\n" -#: src/elflint.c:3008 +#: src/elflint.c:3047 #, c-format msgid "section [%2d] '%s': symbol %d: local symbol with version\n" msgstr "розділ [%2d] «%s»: символ %d: локальний символ з версією\n" -#: src/elflint.c:3022 +#: src/elflint.c:3061 #, c-format msgid "section [%2d] '%s': symbol %d: invalid version index %d\n" msgstr "розділ [%2d] «%s»: символ %d: некоректний індекс версії %d\n" -#: src/elflint.c:3027 +#: src/elflint.c:3066 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for defined version\n" @@ -2918,7 +2929,7 @@ msgstr "" "розділ [%2d] «%s»: символ %d: індекси версії %d призначено до визначеної " "версії\n" -#: src/elflint.c:3037 +#: src/elflint.c:3076 #, c-format msgid "" "section [%2d] '%s': symbol %d: version index %d is for requested version\n" @@ -2926,45 +2937,45 @@ msgstr "" "розділ [%2d] «%s»: символ %d: індекс версії %d призначено для версії, на яку " "надійшов запит\n" -#: src/elflint.c:3090 +#: src/elflint.c:3129 #, c-format msgid "more than one version reference section present\n" msgstr "виявлено більше за один розділ посилань на версії\n" -#: src/elflint.c:3098 src/elflint.c:3245 +#: src/elflint.c:3137 src/elflint.c:3284 #, c-format msgid "section [%2d] '%s': sh_link does not link to string table\n" msgstr "розділ [%2d] «%s»: sh_link не посилається на таблицю рядків\n" -#: src/elflint.c:3123 src/elflint.c:3299 +#: src/elflint.c:3162 src/elflint.c:3338 #, c-format msgid "section [%2d] '%s': entry %d has wrong version %d\n" msgstr "розділ [%2d] «%s»: запис %d має помилкову версію %d\n" -#: src/elflint.c:3130 src/elflint.c:3306 +#: src/elflint.c:3169 src/elflint.c:3345 #, c-format msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n" msgstr "" "розділ [%2d] «%s»: запис %d містить помилкове зміщення у допоміжних даних\n" -#: src/elflint.c:3140 +#: src/elflint.c:3179 #, c-format msgid "section [%2d] '%s': entry %d has invalid file reference\n" msgstr "розділ [%2d] «%s»: запис %d містить некоректне посилання на файл\n" -#: src/elflint.c:3148 +#: src/elflint.c:3187 #, c-format msgid "section [%2d] '%s': entry %d references unknown dependency\n" msgstr "розділ [%2d] «%s»: запис %d посилається на невідому залежність\n" -#: src/elflint.c:3160 +#: src/elflint.c:3199 #, 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:3168 +#: src/elflint.c:3207 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name " @@ -2973,7 +2984,7 @@ msgstr "" "розділ [%2d] «%s»: допоміжний запис %d запису %d містить некоректне " "посилання на назву\n" -#: src/elflint.c:3177 +#: src/elflint.c:3216 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: " @@ -2982,7 +2993,7 @@ msgstr "" "розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове значення " "хешу: %#x, мало бути %#x\n" -#: src/elflint.c:3186 +#: src/elflint.c:3225 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version " @@ -2991,7 +3002,7 @@ msgstr "" "розділ [%2d] «%s»: допоміжний запис %d запису %d містить дублікати назви " "версії «%s»\n" -#: src/elflint.c:3197 +#: src/elflint.c:3236 #, c-format msgid "" "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n" @@ -2999,13 +3010,13 @@ msgstr "" "розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове наступне " "поле\n" -#: src/elflint.c:3214 src/elflint.c:3390 +#: src/elflint.c:3253 src/elflint.c:3429 #, c-format msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n" msgstr "" "розділ [%2d] «%s»: запис %d має некоректне зміщення щодо наступного запису\n" -#: src/elflint.c:3222 src/elflint.c:3398 +#: src/elflint.c:3261 src/elflint.c:3437 #, c-format msgid "" "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says " @@ -3014,44 +3025,44 @@ msgstr "" "розділ [%2d] «%s»: запис %d має нульове зміщення щодо наступного запису, але " "за sh_info можна зрозуміти, що записів більше\n" -#: src/elflint.c:3237 +#: src/elflint.c:3276 #, c-format msgid "more than one version definition section present\n" msgstr "виявлено більше за один розділ визначення версій\n" -#: src/elflint.c:3284 +#: src/elflint.c:3323 #, c-format msgid "section [%2d] '%s': more than one BASE definition\n" msgstr "розділ [%2d] «%s»: повторне визначення BASE\n" -#: src/elflint.c:3288 +#: src/elflint.c:3327 #, 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:3294 +#: src/elflint.c:3333 #, c-format msgid "section [%2d] '%s': entry %d has unknown flag\n" msgstr "розділ [%2d] «%s»: невідомий прапорець запису %d\n" -#: src/elflint.c:3321 +#: src/elflint.c:3360 #, c-format msgid "section [%2d] '%s': entry %d has invalid name reference\n" msgstr "розділ [%2d] «%s»: запис %d містить некоректне посилання на назву\n" -#: src/elflint.c:3328 +#: src/elflint.c:3367 #, 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:3336 +#: src/elflint.c:3375 #, c-format msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n" msgstr "розділ [%2d] «%s»: запис %d містить дублікати назви версії «%s»\n" -#: src/elflint.c:3356 +#: src/elflint.c:3395 #, c-format msgid "" "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n" @@ -3059,53 +3070,53 @@ msgstr "" "розділ [%2d] «%s»: запис %d містить некоректне посилання на назву у " "допоміжних даних\n" -#: src/elflint.c:3373 +#: src/elflint.c:3412 #, c-format msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n" msgstr "" "розділ [%2d] «%s»: у допоміжних даних запису %d міститься помилкове поле " "наступного запису\n" -#: src/elflint.c:3406 +#: src/elflint.c:3445 #, c-format msgid "section [%2d] '%s': no BASE definition\n" msgstr "розділ [%2d] «%s»: немає визначення BASE\n" -#: src/elflint.c:3422 +#: src/elflint.c:3461 #, c-format msgid "section [%2d] '%s': unknown parent version '%s'\n" msgstr "розділ [%2d] «%s»: невідома основна версія «%s»\n" -#: src/elflint.c:3447 +#: src/elflint.c:3486 #, c-format msgid "section [%2d] '%s': empty object attributes section\n" msgstr "розділ [%2d] «%s»: порожній розділ атрибутів об’єкта\n" -#: src/elflint.c:3463 +#: src/elflint.c:3502 #, c-format msgid "section [%2d] '%s': unrecognized attribute format\n" msgstr "розділ [%2d] «%s»: не вдалося визначити формат атрибутів\n" -#: src/elflint.c:3474 +#: src/elflint.c:3513 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute section\n" msgstr "" "розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у розділі атрибутів\n" -#: src/elflint.c:3483 +#: src/elflint.c:3522 #, c-format msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n" msgstr "" "розділ [%2d] «%s»: зміщення %zu: некоректна довжина у розділі атрибутів\n" -#: src/elflint.c:3495 +#: src/elflint.c:3534 #, c-format msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n" msgstr "" "розділ [%2d] «%s»: зміщення %zu: незавершений рядок назви постачальника\n" -#: src/elflint.c:3512 +#: src/elflint.c:3551 #, c-format msgid "" "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n" @@ -3113,12 +3124,12 @@ msgstr "" "розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі підрозділу " "атрибутів\n" -#: src/elflint.c:3521 +#: src/elflint.c:3560 #, c-format msgid "section [%2d] '%s': offset %zu: truncated attribute section\n" msgstr "розділ [%2d] «%s»: зміщення %zu: обрізаний розділ атрибутів\n" -#: src/elflint.c:3530 +#: src/elflint.c:3569 #, c-format msgid "" "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n" @@ -3126,7 +3137,7 @@ msgstr "" "розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у підрозділі " "атрибутів\n" -#: src/elflint.c:3545 +#: src/elflint.c:3584 #, c-format msgid "" "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n" @@ -3134,7 +3145,7 @@ msgstr "" "розділ [%2d] «%s»: зміщення %zu: некоректна довжина у підрозділі атрибутів\n" #. Tag_File -#: src/elflint.c:3556 +#: src/elflint.c:3595 #, c-format msgid "" "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n" @@ -3142,35 +3153,35 @@ msgstr "" "розділ [%2d] «%s»: зміщення %zu: підрозділ атрибутів містить неочікуваний " "теґ %u\n" -#: src/elflint.c:3574 +#: src/elflint.c:3616 #, c-format msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n" msgstr "" "розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі атрибуту\n" -#: src/elflint.c:3585 +#: src/elflint.c:3627 #, c-format msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n" msgstr "розділ [%2d] «%s»: зміщення %zu: незавершений рядок у атрибуті\n" -#: src/elflint.c:3598 +#: src/elflint.c:3640 #, c-format msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n" msgstr "розділ [%2d] «%s»: зміщення %zu: незавершений теґ атрибуту %u\n" -#: src/elflint.c:3602 +#: src/elflint.c:3644 #, c-format msgid "" "section [%2d] '%s': offset %zu: unrecognized %s attribute value %\n" msgstr "" "розділ [%2d] «%s»: зміщення %zu: невідоме значення %s атрибуту %\n" -#: src/elflint.c:3612 +#: src/elflint.c:3654 #, c-format msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n" msgstr "розділ [%2d] «%s»: зміщення %zu: невідомий постачальник «%s»\n" -#: src/elflint.c:3618 +#: src/elflint.c:3660 #, c-format msgid "" "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n" @@ -3178,47 +3189,47 @@ msgstr "" "розділ [%2d] «%s»: зміщення %zu: зайві байти після останнього розділу " "атрибутів\n" -#: src/elflint.c:3715 +#: src/elflint.c:3758 #, c-format msgid "cannot get section header of zeroth section\n" msgstr "не вдалося отримати заголовок нульового розділу\n" -#: src/elflint.c:3719 +#: src/elflint.c:3762 #, c-format msgid "zeroth section has nonzero name\n" msgstr "нульовий розділ має ненульову назву\n" -#: src/elflint.c:3721 +#: src/elflint.c:3764 #, c-format msgid "zeroth section has nonzero type\n" msgstr "нульовий розділ має ненульовий тип\n" -#: src/elflint.c:3723 +#: src/elflint.c:3766 #, c-format msgid "zeroth section has nonzero flags\n" msgstr "нульовий розділ має ненульові прапорці\n" -#: src/elflint.c:3725 +#: src/elflint.c:3768 #, c-format msgid "zeroth section has nonzero address\n" msgstr "нульовий розділ має ненульову адресу\n" -#: src/elflint.c:3727 +#: src/elflint.c:3770 #, c-format msgid "zeroth section has nonzero offset\n" msgstr "нульовий розділ має ненульове зміщення\n" -#: src/elflint.c:3729 +#: src/elflint.c:3772 #, c-format msgid "zeroth section has nonzero align value\n" msgstr "нульовий розділ має ненульове значення вирівнювання\n" -#: src/elflint.c:3731 +#: src/elflint.c:3774 #, c-format msgid "zeroth section has nonzero entry size value\n" msgstr "нульовий розділ має ненульове значення розміру запису\n" -#: src/elflint.c:3734 +#: src/elflint.c:3777 #, c-format msgid "" "zeroth section has nonzero size value while ELF header has nonzero shnum " @@ -3227,7 +3238,7 @@ msgstr "" "нульовий розділ має ненульове значення розміру, хоча заголовок ELF ман " "ненульове значення shnum\n" -#: src/elflint.c:3738 +#: src/elflint.c:3781 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " @@ -3236,7 +3247,7 @@ msgstr "" "нульовий розділ має ненульове значення компонування, хоча у заголовку ELF " "немає сигналу переповнення у shstrndx\n" -#: src/elflint.c:3742 +#: src/elflint.c:3785 #, c-format msgid "" "zeroth section has nonzero link value while ELF header does not signal " @@ -3245,28 +3256,28 @@ msgstr "" "нульовий розділ має ненульове значення компонування, хоча у заголовку ELF " "немає сигналу переповнення у phnum\n" -#: src/elflint.c:3760 +#: src/elflint.c:3803 #, c-format msgid "cannot get section header for section [%2zu] '%s': %s\n" msgstr "не вдалося отримати заголовок розділу [%2zu] «%s»: %s\n" -#: src/elflint.c:3769 +#: src/elflint.c:3812 #, c-format msgid "section [%2zu]: invalid name\n" msgstr "розділ [%2zu]: некоректна назва\n" -#: src/elflint.c:3796 +#: src/elflint.c:3839 #, c-format msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n" msgstr "" "розділ [%2d] «%s» належить до помилкового типу: мав бути %s, маємо %s\n" -#: src/elflint.c:3813 +#: src/elflint.c:3856 #, c-format msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n" msgstr "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, маємо %s\n" -#: src/elflint.c:3831 +#: src/elflint.c:3874 #, c-format msgid "" "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n" @@ -3274,12 +3285,12 @@ msgstr "" "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, можливо, %s, але " "маємо %s\n" -#: src/elflint.c:3848 +#: src/elflint.c:3891 #, c-format msgid "section [%2zu] '%s' present in object file\n" msgstr "у об’єктному файлі виявлено розділ [%2zu] «%s»\n" -#: src/elflint.c:3854 src/elflint.c:3886 +#: src/elflint.c:3897 src/elflint.c:3929 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n" @@ -3287,7 +3298,7 @@ msgstr "" "у розділ [%2zu] «%s» встановлено прапорець SHF_ALLOC, але немає придатного " "до завантаження сегмента\n" -#: src/elflint.c:3859 src/elflint.c:3891 +#: src/elflint.c:3902 src/elflint.c:3934 #, c-format msgid "" "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable " @@ -3296,7 +3307,7 @@ msgstr "" "у розділі [%2zu] «%s» не встановлено прапорець SHF_ALLOC, але є придатні до " "завантаження сегменти\n" -#: src/elflint.c:3867 +#: src/elflint.c:3910 #, c-format msgid "" "section [%2zu] '%s' is extension section index table in non-object file\n" @@ -3304,22 +3315,22 @@ msgstr "" "розділ [%2zu] «%s» є таблицею-покажчиком розділу розширень у файлі, який не " "є об’єктним\n" -#: src/elflint.c:3910 +#: src/elflint.c:3953 #, c-format msgid "section [%2zu] '%s': size not multiple of entry size\n" msgstr "розділ [%2zu] «%s»: розмір не є кратним до розміру запису\n" -#: src/elflint.c:3915 +#: src/elflint.c:3958 #, c-format msgid "cannot get section header\n" msgstr "не вдалося отримати заголовок розділу\n" -#: src/elflint.c:3925 +#: src/elflint.c:3968 #, c-format msgid "section [%2zu] '%s' has unsupported type %d\n" msgstr "розділ [%2zu] «%s» належить до непідтримуваного типу %d\n" -#: src/elflint.c:3945 +#: src/elflint.c:3988 #, c-format msgid "" "section [%2zu] '%s' contains invalid processor-specific flag(s) %#\n" @@ -3327,74 +3338,74 @@ msgstr "" "розділ [%2zu] «%s» містить некоректні специфічні для процесора прапорці " "%#\n" -#: src/elflint.c:3955 +#: src/elflint.c:3998 #, c-format msgid "section [%2zu] '%s' contains unknown flag(s) %#\n" msgstr "розділ [%2zu] «%s» містить невідомі прапорці %#\n" -#: src/elflint.c:3963 +#: src/elflint.c:4006 #, c-format msgid "section [%2zu] '%s': thread-local data sections address not zero\n" msgstr "" "розділ [%2zu] «%s»: адреса розділів локальних даних потоків не є нульовою\n" -#: src/elflint.c:3973 +#: src/elflint.c:4016 #, c-format msgid "section [%2zu] '%s': allocated section cannot be compressed\n" msgstr "" "розділ [%2zu] «%s»: розміщений у пам'яті розділ не може бути стиснений\n" -#: src/elflint.c:3978 +#: src/elflint.c:4021 #, c-format msgid "section [%2zu] '%s': nobits section cannot be compressed\n" msgstr "розділ [%2zu] «%s»: розділ nobits не може бути стиснений\n" -#: src/elflint.c:3984 +#: src/elflint.c:4027 #, c-format msgid "" "section [%2zu] '%s': compressed section with no compression header: %s\n" msgstr "розділ [%2zu] «%s»: стиснений розділ без заголовка стиснення: %s\n" -#: src/elflint.c:3990 +#: src/elflint.c:4033 #, c-format msgid "section [%2zu] '%s': invalid section reference in link value\n" msgstr "" "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні компонування\n" -#: src/elflint.c:3995 +#: src/elflint.c:4038 #, c-format msgid "section [%2zu] '%s': invalid section reference in info value\n" msgstr "" "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні відомостей\n" -#: src/elflint.c:4002 +#: src/elflint.c:4045 #, c-format msgid "section [%2zu] '%s': strings flag set without merge flag\n" msgstr "розділ [%2zu] «%s»: встановлено прапорець strings без прапорця merge\n" -#: src/elflint.c:4007 +#: src/elflint.c:4050 #, c-format msgid "section [%2zu] '%s': merge flag set but entry size is zero\n" msgstr "" "розділ [%2zu] «%s»: встановлено прапорець merge, але розмір запису є " "нульовим\n" -#: src/elflint.c:4026 +#: src/elflint.c:4069 #, c-format msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n" msgstr "розділ [%2zu] «%s» має неочікуваний тип %d для виконуваного розділу\n" -#: src/elflint.c:4035 +#: src/elflint.c:4078 #, c-format msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n" msgstr "розділ [%2zu] «%s» у файлах debuginfo має належати до типу NOBITS\n" -#: src/elflint.c:4042 +#: src/elflint.c:4085 #, c-format msgid "section [%2zu] '%s' is both executable and writable\n" msgstr "розділ [%2zu] «%s» є одночасно виконуваним і придатним до запису\n" -#: src/elflint.c:4073 +#: src/elflint.c:4116 #, c-format msgid "" "section [%2zu] '%s' not fully contained in segment of program header entry " @@ -3403,7 +3414,7 @@ msgstr "" "розділ [%2zu] «%s» не повністю міститься у сегменті запису заголовка " "програми %d\n" -#: src/elflint.c:4083 +#: src/elflint.c:4126 #, c-format msgid "" "section [%2zu] '%s' has type NOBITS but is read from the file in segment of " @@ -3412,7 +3423,7 @@ msgstr "" "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з " "файла у сегментів запису заголовка програми %d\n" -#: src/elflint.c:4109 +#: src/elflint.c:4152 #, c-format msgid "" "section [%2zu] '%s' has type NOBITS but is read from the file in segment of " @@ -3421,7 +3432,7 @@ msgstr "" "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з " "файла у сегментів запису заголовка програми %d, а вміст файла є ненульовим\n" -#: src/elflint.c:4120 +#: src/elflint.c:4163 #, c-format msgid "" "section [%2zu] '%s' has not type NOBITS but is not read from the file in " @@ -3430,19 +3441,19 @@ msgstr "" "розділ [%2zu] «%s» не належить до типу NOBITS, але його читання не " "виконується з файла у сегментів запису заголовка програми %d\n" -#: src/elflint.c:4131 +#: src/elflint.c:4174 #, c-format msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n" msgstr "розділ [%2zu] «%s» є виконуваним у невиконуваному сегменті %d\n" -#: src/elflint.c:4141 +#: src/elflint.c:4184 #, c-format msgid "section [%2zu] '%s' is writable in unwritable segment %d\n" msgstr "" "розділ [%2zu] «%s» є придатним до запису у непридатному до запису сегменті " "%d\n" -#: src/elflint.c:4151 +#: src/elflint.c:4194 #, c-format msgid "" "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n" @@ -3450,7 +3461,7 @@ msgstr "" "розділ [%2zu] «%s»: встановлено прапорець alloc, але розділ не перебуває у " "жодному завантаженому сегменті\n" -#: src/elflint.c:4157 +#: src/elflint.c:4200 #, c-format msgid "" "section [%2zu] '%s': ELF header says this is the section header string table " @@ -3459,7 +3470,7 @@ msgstr "" "розділ [%2zu] «%s»: заголовок ELF повідомляє про те, що це таблиця рядків " "заголовка розділу, але ця таблиця не належить до типу SHT_TYPE\n" -#: src/elflint.c:4165 +#: src/elflint.c:4208 #, c-format msgid "" "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n" @@ -3467,17 +3478,17 @@ msgstr "" "розділ [%2zu] «%s»: придатні до пересування файли не можуть містити " "динамічних таблиць символів\n" -#: src/elflint.c:4216 +#: src/elflint.c:4263 #, c-format msgid "more than one version symbol table present\n" msgstr "виявлено більше за одну таблицю символів версій\n" -#: src/elflint.c:4239 +#: src/elflint.c:4286 #, c-format msgid "INTERP program header entry but no .interp section\n" msgstr "існує запис заголовка програми INTERP, але не розділ .interp\n" -#: src/elflint.c:4250 +#: src/elflint.c:4297 #, c-format msgid "" "loadable segment [%u] is executable but contains no executable sections\n" @@ -3485,14 +3496,14 @@ msgstr "" "придатний до завантаження сегмент [%u] є виконуваним, але не містить " "виконуваних розділів\n" -#: src/elflint.c:4256 +#: src/elflint.c:4303 #, c-format msgid "loadable segment [%u] is writable but contains no writable sections\n" msgstr "" "придатний до завантаження розділ [%u] є придатним до запису, але не містить " "придатних до запису розділів\n" -#: src/elflint.c:4267 +#: src/elflint.c:4314 #, c-format msgid "" "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section " @@ -3501,24 +3512,24 @@ msgstr "" "немає розділу .gnu.versym, хоча існує розділ .gnu.versym_d або .gnu." "versym_r\n" -#: src/elflint.c:4280 +#: src/elflint.c:4327 #, c-format msgid "duplicate version index %d\n" msgstr "дублікат індексу версії %d\n" -#: src/elflint.c:4294 +#: src/elflint.c:4341 #, 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:4343 +#: src/elflint.c:4390 #, c-format msgid "phdr[%d]: unknown core file note type % at offset %\n" msgstr "" "phdr[%d]: невідомий тип нотатки файла core % за зміщенням %\n" -#: src/elflint.c:4347 +#: src/elflint.c:4394 #, c-format msgid "" "section [%2d] '%s': unknown core file note type % at offset %zu\n" @@ -3526,7 +3537,7 @@ msgstr "" "розділ [%2d] «%s»: невідомий тип нотатки файла core % за зміщенням " "%zu\n" -#: src/elflint.c:4403 +#: src/elflint.c:4450 #, c-format msgid "" "phdr[%d]: unknown object file note type % with owner name '%s' at " @@ -3535,7 +3546,7 @@ msgstr "" "phdr[%d]: невідомий тип нотатки у файлі об'єктів, %, із іменем " "власника «%s» за зміщенням %zu\n" -#: src/elflint.c:4408 +#: src/elflint.c:4455 #, c-format msgid "" "section [%2d] '%s': unknown object file note type % with owner name " @@ -3544,39 +3555,39 @@ msgstr "" "розділ [%2d] «%s»: невідомий тип нотатки у файлі об'єктів, %, із " "іменем власника «%s» за зміщенням %zu\n" -#: src/elflint.c:4427 +#: src/elflint.c:4474 #, c-format msgid "phdr[%d]: no note entries defined for the type of file\n" msgstr "phdr[%d]: для цього типу файлів не визначено записів нотаток\n" -#: src/elflint.c:4447 +#: src/elflint.c:4494 #, c-format msgid "phdr[%d]: cannot get content of note section: %s\n" msgstr "phdr[%d]: не вдалося отримати вміст розділу нотаток: %s\n" -#: src/elflint.c:4450 +#: src/elflint.c:4497 #, c-format msgid "phdr[%d]: extra % bytes after last note\n" msgstr "phdr[%d]: зайві % байтів після останнього запису нотатки\n" -#: src/elflint.c:4471 +#: src/elflint.c:4518 #, c-format msgid "section [%2d] '%s': no note entries defined for the type of file\n" msgstr "" "розділ [%2d] «%s»: для цього типу файлів не визначено записів нотаток\n" -#: src/elflint.c:4478 +#: src/elflint.c:4525 #, c-format msgid "section [%2d] '%s': cannot get content of note section\n" msgstr "розділ [%2d] «%s»: не вдалося отримати вміст розділу нотаток\n" -#: src/elflint.c:4481 +#: src/elflint.c:4528 #, c-format msgid "section [%2d] '%s': extra % bytes after last note\n" msgstr "" "розділ [%2d] «%s»: додаткові % байтів після останньої нотатки\n" -#: src/elflint.c:4499 +#: src/elflint.c:4546 #, c-format msgid "" "only executables, shared objects, and core files can have program headers\n" @@ -3584,66 +3595,66 @@ msgstr "" "заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів " "спільного використання або файлів core\n" -#: src/elflint.c:4514 +#: src/elflint.c:4561 #, c-format msgid "cannot get program header entry %d: %s\n" msgstr "не вдалося отримати запис заголовка програми %d: %s\n" -#: src/elflint.c:4524 +#: src/elflint.c:4571 #, c-format msgid "program header entry %d: unknown program header entry type %#\n" msgstr "" "запис заголовка програми %d: невідомий тип запису заголовка програми " "%#\n" -#: src/elflint.c:4535 +#: src/elflint.c:4582 #, c-format msgid "more than one INTERP entry in program header\n" msgstr "більше за один запис INTERP у заголовку програми\n" -#: src/elflint.c:4543 +#: src/elflint.c:4590 #, c-format msgid "more than one TLS entry in program header\n" msgstr "більше за один запис TLS у заголовку програми\n" -#: src/elflint.c:4550 +#: src/elflint.c:4597 #, c-format msgid "static executable cannot have dynamic sections\n" msgstr "у статичному виконуваному файлі не може бути динамічних розділів\n" -#: src/elflint.c:4564 +#: src/elflint.c:4611 #, c-format msgid "dynamic section reference in program header has wrong offset\n" msgstr "" "посилання на динамічний розділ у заголовку програми має помилкове зміщення\n" -#: src/elflint.c:4567 +#: src/elflint.c:4614 #, c-format msgid "dynamic section size mismatch in program and section header\n" msgstr "" "розміри динамічного розділу у заголовку програми та у заголовку розділу не " "збігаються\n" -#: src/elflint.c:4577 +#: src/elflint.c:4624 #, c-format msgid "more than one GNU_RELRO entry in program header\n" msgstr "більше за один запис GNU_RELRO у заголовку програми\n" -#: src/elflint.c:4598 +#: src/elflint.c:4645 #, c-format msgid "loadable segment GNU_RELRO applies to is not writable\n" msgstr "" "придатний до завантаження сегмент, до якого звертається GNU_RELRO, " "непридатний до запису\n" -#: src/elflint.c:4609 +#: src/elflint.c:4656 #, c-format msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n" msgstr "" "прапорці придатного до завантаження сегмента [%u] не відповідають прапорцям " "GNU_RELRO [%u]\n" -#: src/elflint.c:4616 +#: src/elflint.c:4663 #, c-format msgid "" "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n" @@ -3651,76 +3662,76 @@ msgstr "" "прапорці GNU_RELRO [%u] не є підмножиною прапорців завантажуваного сегмента " "[%u]\n" -#: src/elflint.c:4625 src/elflint.c:4648 +#: src/elflint.c:4672 src/elflint.c:4695 #, c-format msgid "%s segment not contained in a loaded segment\n" msgstr "сегмент %s не міститься у завантаженому сегменті\n" -#: src/elflint.c:4654 +#: src/elflint.c:4701 #, c-format msgid "program header offset in ELF header and PHDR entry do not match" msgstr "зміщення заголовка програми у заголовку ELF і запис PHDR не збігаються" -#: src/elflint.c:4681 +#: src/elflint.c:4728 #, c-format msgid "call frame search table reference in program header has wrong offset\n" msgstr "" "посилання на таблицю вікон викликів у заголовку програми має помилкове " "зміщення\n" -#: src/elflint.c:4684 +#: src/elflint.c:4731 #, c-format msgid "call frame search table size mismatch in program and section header\n" msgstr "" "розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку " "розділу не збігаються\n" -#: src/elflint.c:4697 +#: src/elflint.c:4744 #, 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:4705 +#: src/elflint.c:4752 #, c-format msgid "call frame search table must be allocated\n" msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’яті\n" -#: src/elflint.c:4708 +#: src/elflint.c:4755 #, c-format msgid "section [%2zu] '%s' must be allocated\n" msgstr "розділ [%2zu] «%s» має бути розміщено у пам’яті\n" -#: src/elflint.c:4712 +#: src/elflint.c:4759 #, c-format msgid "call frame search table must not be writable\n" msgstr "таблиця пошуку вікон викликів не повинна бути придатною до запису\n" -#: src/elflint.c:4715 +#: src/elflint.c:4762 #, c-format msgid "section [%2zu] '%s' must not be writable\n" msgstr "розділ [%2zu] «%s» не повинен бути придатним до запису\n" -#: src/elflint.c:4720 +#: src/elflint.c:4767 #, c-format msgid "call frame search table must not be executable\n" msgstr "таблиця пошуку вікон викликів не повинна бути придатною до виконання\n" -#: src/elflint.c:4723 +#: src/elflint.c:4770 #, c-format msgid "section [%2zu] '%s' must not be executable\n" msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконання\n" -#: src/elflint.c:4737 +#: src/elflint.c:4784 #, c-format msgid "program header entry %d: file size greater than memory size\n" msgstr "запис заголовка програми %d: розмір файла перевищує об’єм пам’яті\n" -#: src/elflint.c:4744 +#: src/elflint.c:4791 #, c-format msgid "program header entry %d: alignment not a power of 2\n" msgstr "запис заголовка програми %d: значення вирівнювання не є степенем 2\n" -#: src/elflint.c:4747 +#: src/elflint.c:4794 #, c-format msgid "" "program header entry %d: file offset and virtual address not module of " @@ -3729,7 +3740,7 @@ msgstr "" "запис заголовка програми %d: зміщення у файлі і віртуальна адреса не " "співвідносяться з вирівнюванням\n" -#: src/elflint.c:4760 +#: src/elflint.c:4807 #, c-format msgid "" "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME " @@ -3738,17 +3749,17 @@ msgstr "" "виконуваний модуль/DSO з розділом .eh_frame_hdr не містить запису заголовка " "програми PT_GNU_EH_FRAME" -#: src/elflint.c:4794 +#: src/elflint.c:4841 #, c-format msgid "cannot read ELF header: %s\n" msgstr "не вдалося прочитати заголовок ELF: %s\n" -#: src/elflint.c:4806 +#: src/elflint.c:4853 #, fuzzy, c-format msgid "cannot create backend for ELF file\n" msgstr "не вдалося створити файл" -#: src/elflint.c:4827 +#: src/elflint.c:4874 #, c-format msgid "text relocation flag set but not needed\n" msgstr "" @@ -3965,7 +3976,7 @@ msgid "%s: INTERNAL ERROR %d (%s): %s" msgstr "%s: ВНУТРІШНЯ ПОМИЛКА %d (%s): %s" #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307 -#: src/strip.c:2766 +#: src/strip.c:2763 #, c-format msgid "while closing '%s'" msgstr "під час закриття «%s»" @@ -4008,13 +4019,13 @@ msgstr "%s%s%s: не вдалося розпізнати формат файла msgid "cannot create search tree" msgstr "не вдалося створити дерево пошуку" -#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663 -#: src/readelf.c:1471 src/readelf.c:1620 src/readelf.c:1847 src/readelf.c:2084 -#: src/readelf.c:2273 src/readelf.c:2451 src/readelf.c:2526 src/readelf.c:2791 -#: src/readelf.c:2866 src/readelf.c:2952 src/readelf.c:3547 src/readelf.c:3595 -#: src/readelf.c:3664 src/readelf.c:11581 src/readelf.c:12771 -#: src/readelf.c:12981 src/readelf.c:13049 src/size.c:396 src/size.c:467 -#: src/strip.c:1093 +#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685 +#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123 +#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854 +#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896 +#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029 +#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396 +#: src/size.c:467 src/strip.c:1093 #, c-format msgid "cannot get section header string table index" msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків" @@ -4123,7 +4134,7 @@ msgstr "Показати інформацію лише з розділу НАЗ msgid "Show information from FILEs (a.out by default)." msgstr "Показати інформацію з ФАЙЛів (типово a.out)." -#: src/objdump.c:217 src/readelf.c:608 +#: src/objdump.c:217 src/readelf.c:630 msgid "No operation specified.\n" msgstr "Не вказано дії.\n" @@ -4132,11 +4143,11 @@ msgstr "Не вказано дії.\n" msgid "while close `%s'" msgstr "під час закриття «%s»" -#: src/objdump.c:362 src/readelf.c:2179 src/readelf.c:2370 +#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409 msgid "INVALID SYMBOL" msgstr "НЕКОРЕКТНИЙ СИМВОЛ" -#: src/objdump.c:377 src/readelf.c:2213 src/readelf.c:2406 +#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445 msgid "INVALID SECTION" msgstr "НЕКОРЕКТНИЙ РОЗДІЛ" @@ -4194,18 +4205,18 @@ msgstr "«%s» не є архівом" msgid "error while freeing sub-ELF descriptor: %s" msgstr "помилка під час спроби вивільнення дескриптора під-ELF: %s" -#: src/readelf.c:96 +#: src/readelf.c:97 msgid "ELF input selection:" msgstr "Вибір вихідних даних ELF:" -#: src/readelf.c:98 +#: src/readelf.c:99 msgid "" "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data" msgstr "" "Використовувати вказаний за іменем РОЗДІЛ (типово .gnu_debugdata) як " "(стиснені) вхідні дані ELF" -#: src/readelf.c:101 +#: src/readelf.c:102 msgid "" "Used with -w to find the skeleton Compile Units in FILE associated with the " "Split Compile units in a .dwo input file" @@ -4213,71 +4224,71 @@ msgstr "" "Використовується з -w для пошуку основи компільованих модулів у ФАЙЛі, " "пов'язаному із модулями розділеної компіляції у вхідному файлі .dwo" -#: src/readelf.c:103 +#: src/readelf.c:104 msgid "ELF output selection:" msgstr "Вибір виводу ELF:" -#: src/readelf.c:105 +#: src/readelf.c:106 msgid "All these plus -p .strtab -p .dynstr -p .comment" msgstr "Все це плюс -p .strtab -p .dynstr -p .comment" -#: src/readelf.c:106 +#: src/readelf.c:107 msgid "Display the dynamic segment" msgstr "Показувати динамічний сегмент" -#: src/readelf.c:107 +#: src/readelf.c:108 msgid "Display the ELF file header" msgstr "Показувати заголовок файла ELF" -#: src/readelf.c:109 +#: src/readelf.c:110 msgid "Display histogram of bucket list lengths" msgstr "Показати гістограму довжин списку блоків" -#: src/readelf.c:110 +#: src/readelf.c:111 msgid "Display the program headers" msgstr "Показувати заголовки програми" -#: src/readelf.c:112 +#: src/readelf.c:113 msgid "Display relocations" msgstr "Показувати пересування" -#: src/readelf.c:113 +#: src/readelf.c:114 msgid "Display the section groups" msgstr "Показувати групи розділів" -#: src/readelf.c:114 +#: src/readelf.c:115 msgid "Display the sections' headers" msgstr "Показувати заголовки розділів" -#: src/readelf.c:117 +#: src/readelf.c:118 msgid "Display the symbol table sections" msgstr "Показати розділи таблиці символів" -#: src/readelf.c:120 +#: src/readelf.c:121 msgid "Display (only) the dynamic symbol table" msgstr "Показувати (лише) динамічну таблицю символів" -#: src/readelf.c:121 +#: src/readelf.c:122 msgid "Display versioning information" msgstr "Показувати відомості щодо версії" -#: src/readelf.c:122 +#: src/readelf.c:123 msgid "Display the ELF notes" msgstr "Показувати нотатки ELF" -#: src/readelf.c:124 +#: src/readelf.c:125 msgid "Display architecture specific information, if any" msgstr "Показувати специфічні для архітектури дані, якщо такі буде виявлено" -#: src/readelf.c:126 +#: src/readelf.c:127 msgid "Display sections for exception handling" msgstr "Показувати розділи для обробки виключень" -#: src/readelf.c:128 +#: src/readelf.c:129 msgid "Additional output selection:" msgstr "Додатковий вибір виводу:" -#: src/readelf.c:130 +#: src/readelf.c:131 msgid "" "Display DWARF section content. SECTION can be one of abbrev, addr, aranges, " "decodedaranges, frame, gdb_index, info, info+, loc, line, decodedline, " @@ -4287,42 +4298,42 @@ msgstr "" "aranges, decodedaranges, frame, gdb_index, info, info+, loc, line, " "decodedline, ranges, pubnames, str, macinfo, macro або exception" -#: src/readelf.c:134 +#: src/readelf.c:135 msgid "Dump the uninterpreted contents of SECTION, by number or name" msgstr "" "Створити дамп даних РОЗДІЛ, які не вдалося інтерпретувати, за номером або " "назвами" -#: src/readelf.c:136 +#: src/readelf.c:137 msgid "Print string contents of sections" msgstr "Виводити вміст рядків розділів" -#: src/readelf.c:139 +#: src/readelf.c:140 msgid "Display the symbol index of an archive" msgstr "Показувати покажчик символів архіву" -#: src/readelf.c:141 +#: src/readelf.c:142 msgid "Use the dynamic segment when possible for displaying info" msgstr "" -#: src/readelf.c:143 +#: src/readelf.c:144 msgid "Output control:" msgstr "Керування виводом:" -#: src/readelf.c:145 +#: src/readelf.c:146 msgid "Do not find symbol names for addresses in DWARF data" msgstr "Не шукати назви символів для адрес у даних DWARF" -#: src/readelf.c:147 +#: src/readelf.c:148 msgid "" "Display just offsets instead of resolving values to addresses in DWARF data" msgstr "Показати лише зміщення, а не визначені значення адреси у даних DWARF" -#: src/readelf.c:149 +#: src/readelf.c:150 msgid "Ignored for compatibility (lines always wide)" msgstr "Ігнорується з міркувань сумісності (рядки завжди широкі)" -#: src/readelf.c:151 +#: src/readelf.c:152 msgid "" "Show compression information for compressed sections (when used with -S); " "decompress section before dumping data (when used with -p or -x)" @@ -4331,40 +4342,40 @@ msgstr "" "розпакувати розділ до створення дампу даних (якщо використано з -p або -x)" #. Short description of program. -#: src/readelf.c:156 +#: src/readelf.c:157 msgid "Print information from ELF file in human-readable form." msgstr "Виводити відомості з файла ELF у придатному для читання форматі." #. Look up once. -#: src/readelf.c:373 +#: src/readelf.c:395 msgid "yes" msgstr "так" -#: src/readelf.c:374 +#: src/readelf.c:396 msgid "no" msgstr "ні" -#: src/readelf.c:576 +#: src/readelf.c:598 #, c-format msgid "Unknown DWARF debug section `%s'.\n" msgstr "Невідомий діагностичний розділ DWARF «%s».\n" -#: src/readelf.c:647 src/readelf.c:758 +#: src/readelf.c:669 src/readelf.c:780 #, c-format msgid "cannot generate Elf descriptor: %s" msgstr "не вдалося створити дескриптор Elf: %s" -#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188 +#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188 #, c-format msgid "cannot determine number of sections: %s" msgstr "не вдалося визначити кількість розділів: %s" -#: src/readelf.c:672 src/readelf.c:1287 src/readelf.c:1495 +#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530 #, c-format msgid "cannot get section: %s" msgstr "не вдалося отримати розділ: %s" -#: src/readelf.c:681 src/readelf.c:1294 src/readelf.c:1502 src/readelf.c:13001 +#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470 @@ -4373,114 +4384,120 @@ msgstr "не вдалося отримати розділ: %s" msgid "cannot get section header: %s" msgstr "не вдалося отримати заголовок розділу: %s" -#: src/readelf.c:689 +#: src/readelf.c:711 #, c-format msgid "cannot get section name" msgstr "не вдалося отримати назву розділу" -#: src/readelf.c:698 src/readelf.c:6797 src/readelf.c:10854 src/readelf.c:10956 -#: src/readelf.c:11134 +#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332 +#: src/readelf.c:11516 #, c-format msgid "cannot get %s content: %s" msgstr "не вдалося отримати дані %s: %s" -#: src/readelf.c:714 +#: src/readelf.c:736 #, c-format msgid "cannot create temp file '%s'" msgstr "не вдалося створити файл тимчасових даних «%s»" -#: src/readelf.c:723 +#: src/readelf.c:745 #, c-format msgid "cannot write section data" msgstr "не вдалося записати дані розділу" -#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775 +#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797 #, c-format msgid "error while closing Elf descriptor: %s" msgstr "помилка під час спроби закриття дескриптора Elf: %s" -#: src/readelf.c:736 +#: src/readelf.c:758 #, c-format msgid "error while rewinding file descriptor" msgstr "помилка під час повернення до початкового значення дескриптора файла" -#: src/readelf.c:770 +#: src/readelf.c:792 #, c-format msgid "'%s' is not an archive, cannot print archive index" msgstr "«%s» не є архівом, виведення покажчика архіву неможливе" -#: src/readelf.c:874 +#: src/readelf.c:896 #, c-format msgid "cannot stat input file" msgstr "не вдалося отримати дані з вхідного файла за допомогою stat" -#: src/readelf.c:876 +#: src/readelf.c:898 #, c-format msgid "input file is empty" msgstr "вхідний файл є порожнім" -#: src/readelf.c:878 +#: src/readelf.c:900 #, c-format msgid "failed reading '%s': %s" msgstr "не вдалося прочитати «%s»: %s" -#: src/readelf.c:907 +#: src/readelf.c:929 #, c-format msgid "No such section '%s' in '%s'" msgstr "У «%2$s» немає розділу «%1$s»" -#: src/readelf.c:966 +#: src/readelf.c:988 #, c-format msgid "cannot read ELF header: %s" msgstr "не вдалося прочитати заголовок ELF: %s" -#: src/readelf.c:974 +#: src/readelf.c:996 #, c-format msgid "cannot create EBL handle" msgstr "не вдалося створити дескриптор EBL" -#: src/readelf.c:985 +#: src/readelf.c:1007 #, c-format msgid "cannot determine number of program headers: %s" msgstr "не вдалося визначити кількість заголовків програми: %s" -#: src/readelf.c:1017 +#: src/readelf.c:1039 #, c-format msgid "cannot read ELF: %s" msgstr "не вдалося прочитати ELF: %s" -#: src/readelf.c:1078 +#: src/readelf.c:1072 +#, fuzzy +#| msgid "cannot get section: %s" +msgid "cannot find section" +msgstr "не вдалося отримати розділ: %s" + +#: src/readelf.c:1109 msgid "NONE (None)" msgstr "NONE (Немає)" -#: src/readelf.c:1079 +#: src/readelf.c:1110 msgid "REL (Relocatable file)" msgstr "REL (Придатний до пересування файл)" -#: src/readelf.c:1080 +#: src/readelf.c:1111 msgid "EXEC (Executable file)" msgstr "EXEC (Виконуваний файл)" -#: src/readelf.c:1081 +#: src/readelf.c:1112 msgid "DYN (Shared object file)" msgstr "DYN (Файл об’єктів спільного використання)" -#: src/readelf.c:1082 +#: src/readelf.c:1113 msgid "CORE (Core file)" msgstr "CORE (Файл ядра)" -#: src/readelf.c:1087 +#: src/readelf.c:1118 #, c-format msgid "OS Specific: (%x)\n" msgstr "ОС-специфічне: (%x)\n" #. && e_type <= ET_HIPROC always true -#: src/readelf.c:1089 +#: src/readelf.c:1120 #, c-format msgid "Processor Specific: (%x)\n" msgstr "Специфічне для процесора: (%x)\n" -#: src/readelf.c:1099 +#: src/readelf.c:1130 msgid "" "ELF Header:\n" " Magic: " @@ -4488,7 +4505,7 @@ msgstr "" "Заголовок ELF:\n" " Magic: " -#: src/readelf.c:1103 +#: src/readelf.c:1134 #, c-format msgid "" "\n" @@ -4497,123 +4514,123 @@ msgstr "" "\n" " Клас: %s\n" -#: src/readelf.c:1108 +#: src/readelf.c:1139 #, c-format msgid " Data: %s\n" msgstr " Дані: %s\n" -#: src/readelf.c:1114 +#: src/readelf.c:1145 #, c-format msgid " Ident Version: %hhd %s\n" msgstr " Версія Ident: %hhd %s\n" -#: src/readelf.c:1116 src/readelf.c:1138 +#: src/readelf.c:1147 src/readelf.c:1169 msgid "(current)" msgstr "(поточний)" -#: src/readelf.c:1120 +#: src/readelf.c:1151 #, c-format msgid " OS/ABI: %s\n" msgstr " ОС/ABI: %s\n" -#: src/readelf.c:1123 +#: src/readelf.c:1154 #, c-format msgid " ABI Version: %hhd\n" msgstr " Версія ABI: %hhd\n" -#: src/readelf.c:1126 +#: src/readelf.c:1157 msgid " Type: " msgstr " Тип: " -#: src/readelf.c:1131 +#: src/readelf.c:1162 #, c-format msgid " Machine: %s\n" msgstr " Архітектура: %s\n" -#: src/readelf.c:1133 +#: src/readelf.c:1164 #, c-format msgid " Machine: : 0x%x\n" msgstr " Архітектура: <невідома>: 0x%x\n" -#: src/readelf.c:1136 +#: src/readelf.c:1167 #, c-format msgid " Version: %d %s\n" msgstr " Версія: %d %s\n" -#: src/readelf.c:1140 +#: src/readelf.c:1171 #, c-format msgid " Entry point address: %#\n" msgstr " Адреса вхідної точки: %#\n" -#: src/readelf.c:1143 +#: src/readelf.c:1174 #, c-format msgid " Start of program headers: % %s\n" msgstr " Початок заголовків програм: % %s\n" -#: src/readelf.c:1144 src/readelf.c:1147 +#: src/readelf.c:1175 src/readelf.c:1178 msgid "(bytes into file)" msgstr "(байтів у файл)" -#: src/readelf.c:1146 +#: src/readelf.c:1177 #, c-format msgid " Start of section headers: % %s\n" msgstr " Початок заголовків розділів: % %s\n" -#: src/readelf.c:1149 +#: src/readelf.c:1180 #, c-format msgid " Flags: %s\n" msgstr " Прапорці: %s\n" -#: src/readelf.c:1152 +#: src/readelf.c:1183 #, c-format msgid " Size of this header: % %s\n" msgstr " Розмір цього заголовка: % %s\n" -#: src/readelf.c:1153 src/readelf.c:1156 src/readelf.c:1173 +#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204 msgid "(bytes)" msgstr "(байтів)" -#: src/readelf.c:1155 +#: src/readelf.c:1186 #, c-format msgid " Size of program header entries: % %s\n" msgstr " Розмір записів заголовка програми: % %s\n" -#: src/readelf.c:1158 +#: src/readelf.c:1189 #, c-format msgid " Number of program headers entries: %" msgstr " Кількість записів заголовків програми: %" -#: src/readelf.c:1165 +#: src/readelf.c:1196 #, c-format msgid " (% in [0].sh_info)" msgstr " (% у [0].sh_info)" -#: src/readelf.c:1168 src/readelf.c:1185 src/readelf.c:1199 +#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230 msgid " ([0] not available)" msgstr " ([0] недоступний)" -#: src/readelf.c:1172 +#: src/readelf.c:1203 #, c-format msgid " Size of section header entries: % %s\n" msgstr " Розмір записів заголовків розділів: % %s\n" -#: src/readelf.c:1175 +#: src/readelf.c:1206 #, c-format msgid " Number of section headers entries: %" msgstr " Кількість записів заголовків розділів: %" -#: src/readelf.c:1182 +#: src/readelf.c:1213 #, c-format msgid " (% in [0].sh_size)" msgstr " (% у [0].sh_size)" #. We managed to get the zeroth section. -#: src/readelf.c:1195 +#: src/readelf.c:1226 #, c-format msgid " (% in [0].sh_link)" msgstr " (% у [0].sh_link)" -#: src/readelf.c:1203 +#: src/readelf.c:1234 #, c-format msgid "" " Section header string table index: XINDEX%s\n" @@ -4622,7 +4639,7 @@ msgstr "" " Індекс заголовка розділу у таблиці рядків: XINDEX%s\n" "\n" -#: src/readelf.c:1207 +#: src/readelf.c:1238 #, c-format msgid "" " Section header string table index: %\n" @@ -4631,12 +4648,12 @@ msgstr "" " Індекс заголовка розділу у таблиці рядків: %\n" "\n" -#: src/readelf.c:1253 src/readelf.c:1461 +#: src/readelf.c:1288 src/readelf.c:1496 #, c-format msgid "cannot get number of sections: %s" msgstr "не вдалося отримати кількість розділів: %s" -#: src/readelf.c:1256 +#: src/readelf.c:1291 #, c-format msgid "" "There are %zd section headers, starting at offset %#:\n" @@ -4645,16 +4662,16 @@ msgstr "" "Виявлено %zd заголовків розділів, зміщення початку — %#:\n" "\n" -#: src/readelf.c:1264 +#: src/readelf.c:1299 #, c-format msgid "cannot get section header string table index: %s" msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків: %s" -#: src/readelf.c:1267 +#: src/readelf.c:1302 msgid "Section Headers:" msgstr "Заголовки розділів:" -#: src/readelf.c:1270 +#: src/readelf.c:1305 msgid "" "[Nr] Name Type Addr Off Size ES Flags Lk " "Inf Al" @@ -4662,7 +4679,7 @@ msgstr "" "[№ ] Назва Тип Адр Змі Розмір ES Прап Lk " "Інф Al" -#: src/readelf.c:1272 +#: src/readelf.c:1307 msgid "" "[Nr] Name Type Addr Off Size ES " "Flags Lk Inf Al" @@ -4670,35 +4687,35 @@ msgstr "" "[№ ] Назва Тип Адр Змі Розмір ES " "Прап Lk Інф Al" -#: src/readelf.c:1277 +#: src/readelf.c:1312 msgid " [Compression Size Al]" msgstr " [Стискання Розмір Ал]" -#: src/readelf.c:1279 +#: src/readelf.c:1314 msgid " [Compression Size Al]" msgstr " [Стискання Розмір Ал]" -#: src/readelf.c:1357 +#: src/readelf.c:1392 #, c-format msgid "bad compression header for section %zd: %s" msgstr "помилковий заголовок стиснення для розділу %zd: %s" -#: src/readelf.c:1368 +#: src/readelf.c:1403 #, c-format msgid "bad gnu compressed size for section %zd: %s" msgstr "помилкове значення стисненого розміру gnu для розділу %zd: %s" -#: src/readelf.c:1386 +#: src/readelf.c:1421 msgid "Program Headers:" msgstr "Заголовки програми:" -#: src/readelf.c:1388 +#: src/readelf.c:1423 msgid "" " Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align" msgstr "" " Тип Зміщен ВіртАдр ФізАдр РозмФайл РозмПам Пра Вирів" -#: src/readelf.c:1391 +#: src/readelf.c:1426 msgid "" " Type Offset VirtAddr PhysAddr FileSiz " "MemSiz Flg Align" @@ -4706,12 +4723,12 @@ msgstr "" " Тип Зміщен ВіртАдр ФізАдр " "РозмФайлРозмПам Пра Вирів" -#: src/readelf.c:1448 +#: src/readelf.c:1483 #, c-format msgid "\t[Requesting program interpreter: %s]\n" msgstr "\t[Запит щодо інтерпретатора програми: %s]\n" -#: src/readelf.c:1473 +#: src/readelf.c:1508 msgid "" "\n" " Section to Segment mapping:\n" @@ -4721,12 +4738,12 @@ msgstr "" " Відображення розділів на сегмент:\n" " Розділи сегмента..." -#: src/readelf.c:1484 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163 +#: src/readelf.c:1519 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:1628 +#: src/readelf.c:1663 #, c-format msgid "" "\n" @@ -4744,7 +4761,7 @@ msgstr[2] "" "\n" "Група розділів COMDAT [%2zu] «%s» з підписом «%s» містить %zu записів:\n" -#: src/readelf.c:1633 +#: src/readelf.c:1668 #, c-format msgid "" "\n" @@ -4762,31 +4779,32 @@ msgstr[2] "" "\n" "Група розділів [%2zu] «%s» з підписом «%s» містить %zu записів:\n" -#: src/readelf.c:1641 +#: src/readelf.c:1676 msgid "" msgstr "<НЕКОРЕКТНИЙ СИМВОЛ>" -#: src/readelf.c:1655 +#: src/readelf.c:1690 msgid "" msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>" -#: src/readelf.c:1678 src/readelf.c:2461 src/readelf.c:3563 src/readelf.c:12873 -#: src/readelf.c:12880 src/readelf.c:12924 src/readelf.c:12931 +#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212 +#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365 +#: src/readelf.c:13372 msgid "Couldn't uncompress section" msgstr "Не вдалося розпакувати розділ" -#: src/readelf.c:1682 src/readelf.c:2466 src/readelf.c:3567 +#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916 #, c-format msgid "cannot get section [%zd] header: %s" msgstr "не вдалося отримати заголовок розділу [%zd]: %s" -#: src/readelf.c:1851 src/readelf.c:2532 src/readelf.c:2797 src/readelf.c:2872 -#: src/readelf.c:3175 src/readelf.c:3249 src/readelf.c:5570 +#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221 +#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962 #, c-format msgid "invalid sh_link value in section %zu" msgstr "некоректне значення sh_link у розділі %zu" -#: src/readelf.c:1854 +#: src/readelf.c:1889 #, c-format msgid "" "\n" @@ -4809,7 +4827,7 @@ msgstr[2] "" "Динамічний сегмент містить %lu записів:\n" " Адр: %#0* Зміщення: %#08 Пос. на розділ: [%2u] '%s'\n" -#: src/readelf.c:1867 +#: src/readelf.c:1902 #, fuzzy, c-format #| msgid "" #| "\n" @@ -4840,42 +4858,42 @@ msgstr[2] "" "Динамічний сегмент містить %lu записів:\n" " Адр: %#0* Зміщення: %#08 Пос. на розділ: [%2u] '%s'\n" -#: src/readelf.c:1877 +#: src/readelf.c:1912 msgid " Type Value\n" msgstr " Тип Значення\n" -#: src/readelf.c:1886 +#: src/readelf.c:1921 #, fuzzy #| msgid "cannot get string section data: %s" msgid "cannot get string table by using dynamic segment" msgstr "не вдалося отримати дані розділу рядків: %s" -#: src/readelf.c:1925 +#: src/readelf.c:1960 #, c-format msgid "Shared library: [%s]\n" msgstr "Спільна бібліотека: [%s]\n" -#: src/readelf.c:1929 +#: src/readelf.c:1964 #, c-format msgid "Library soname: [%s]\n" msgstr "Назва so бібліотеки: [%s]\n" -#: src/readelf.c:1933 +#: src/readelf.c:1968 #, c-format msgid "Library rpath: [%s]\n" msgstr "Rpath бібліотеки: [%s]\n" -#: src/readelf.c:1937 +#: src/readelf.c:1972 #, c-format msgid "Library runpath: [%s]\n" msgstr "Runpath бібліотеки: [%s]\n" -#: src/readelf.c:1956 +#: src/readelf.c:1993 #, c-format msgid "% (bytes)\n" msgstr "% (байт)\n" -#: src/readelf.c:2070 src/readelf.c:2259 +#: src/readelf.c:2109 src/readelf.c:2298 #, c-format msgid "" "\n" @@ -4884,7 +4902,7 @@ msgstr "" "\n" "Некоректна таблиця символів за зміщенням %#0\n" -#: src/readelf.c:2087 src/readelf.c:2276 +#: src/readelf.c:2126 src/readelf.c:2315 #, c-format msgid "" "\n" @@ -4913,7 +4931,8 @@ 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:2102 src/readelf.c:2291 +#. A .relr.dyn section does not refer to a specific section. +#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485 #, c-format msgid "" "\n" @@ -4931,30 +4950,40 @@ msgstr[2] "" "\n" "Розділ пересування [%2u] «%s» за зміщенням %#0 містить %d записів:\n" -#: src/readelf.c:2112 +#: src/readelf.c:2151 msgid " Offset Type Value Name\n" msgstr " Зміщення Тип Значення Назва\n" -#: src/readelf.c:2114 +#: src/readelf.c:2153 msgid " Offset Type Value Name\n" msgstr " Зміщення Тип Значення Назва\n" -#: src/readelf.c:2167 src/readelf.c:2178 src/readelf.c:2191 src/readelf.c:2212 -#: src/readelf.c:2224 src/readelf.c:2357 src/readelf.c:2369 src/readelf.c:2383 -#: src/readelf.c:2405 src/readelf.c:2418 +#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251 +#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422 +#: src/readelf.c:2444 src/readelf.c:2457 msgid "" msgstr "<НЕКОРЕКТНЕ ПЕРЕМІЩЕННЯ>" -#: src/readelf.c:2301 +#: src/readelf.c:2340 msgid " Offset Type Value Addend Name\n" msgstr " Зміщення Тип Значення Назва додатка\n" -#: src/readelf.c:2303 +#: src/readelf.c:2342 msgid " Offset Type Value Addend Name\n" msgstr "" " Зміщення Тип Значення Назва додатка\n" -#: src/readelf.c:2540 +#: src/readelf.c:2654 +#, c-format +msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" +msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" + +#: src/readelf.c:2750 +#, c-format +msgid "bad dynamic symbol" +msgstr "помилковий динамічний символ" + +#: src/readelf.c:2868 #, c-format msgid "" "\n" @@ -4972,7 +5001,7 @@ msgstr[2] "" "\n" "Таблиця символів [%2u] «%s» містить %u записів:\n" -#: src/readelf.c:2545 +#: src/readelf.c:2873 #, c-format msgid " %lu local symbol String table: [%2u] '%s'\n" msgid_plural " %lu local symbols String table: [%2u] '%s'\n" @@ -4980,33 +5009,27 @@ msgstr[0] " %lu лок. символ Таблиця символів: [%2u] « msgstr[1] " %lu лок. символи Таблиця символів: [%2u] «%s»\n" msgstr[2] " %lu лок. символів Таблиця символів: [%2u] «%s»\n" -#: src/readelf.c:2553 +#: src/readelf.c:2881 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " №№ Знач. Роз. Тип Зв’яз Вид. Інд Назва\n" -#: src/readelf.c:2555 +#: src/readelf.c:2883 msgid " Num: Value Size Type Bind Vis Ndx Name\n" msgstr " №№ Знач. Роз. Тип Зв’яз Вид. Інд Назва\n" -#: src/readelf.c:2575 -#, c-format -msgid "%5u: %0* %6 %-7s %-6s %-9s %6s %s" -msgstr "%5u: %0* %6 %-7s %-6s %-9s %6s %s" - -#: src/readelf.c:2668 -#, c-format -msgid "bad dynamic symbol" -msgstr "помилковий динамічний символ" +#: src/readelf.c:3002 +msgid "Dynamic symbol information is not available for displaying symbols." +msgstr "" -#: src/readelf.c:2753 +#: src/readelf.c:3102 msgid "none" msgstr "немає" -#: src/readelf.c:2770 +#: src/readelf.c:3119 msgid "| " msgstr "| <невідомо>" -#: src/readelf.c:2800 +#: src/readelf.c:3149 #, c-format msgid "" "\n" @@ -5029,17 +5052,17 @@ msgstr[2] "" "Розділ потреби у версіях [%2u] «%s», що містить %d записів:\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»\n" -#: src/readelf.c:2821 +#: src/readelf.c:3170 #, c-format msgid " %#06x: Version: %hu File: %s Cnt: %hu\n" msgstr " %#06x: Версія: %hu Файл: %s Кть: %hu\n" -#: src/readelf.c:2834 +#: src/readelf.c:3183 #, c-format msgid " %#06x: Name: %s Flags: %s Version: %hu\n" msgstr " %#06x: Назва: %s Прап: %s Версія: %hu\n" -#: src/readelf.c:2876 +#: src/readelf.c:3225 #, c-format msgid "" "\n" @@ -5062,18 +5085,18 @@ msgstr[2] "" "Розділ визначення версії [%2u] «%s», що містить %d записів:\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»\n" -#: src/readelf.c:2904 +#: src/readelf.c:3253 #, 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:2919 +#: src/readelf.c:3268 #, c-format msgid " %#06x: Parent %d: %s\n" msgstr " %#06x: батьківський %d: %s\n" #. Print the header. -#: src/readelf.c:3179 +#: src/readelf.c:3528 #, c-format msgid "" "\n" @@ -5096,15 +5119,15 @@ msgstr[2] "" "Розділ символів версій [%2u] «%s», що містить %d записів:\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»" -#: src/readelf.c:3207 +#: src/readelf.c:3556 msgid " 0 *local* " msgstr " 0 *локальний* " -#: src/readelf.c:3212 +#: src/readelf.c:3561 msgid " 1 *global* " msgstr " 1 *загальний* " -#: src/readelf.c:3254 +#: src/readelf.c:3603 #, c-format msgid "" "\n" @@ -5132,22 +5155,22 @@ msgstr[2] "" "блоками):\n" " Адр.: %#0* Зміщ.: %#08 Посилання на розділ: [%2u] «%s»\n" -#: src/readelf.c:3276 +#: src/readelf.c:3625 #, no-c-format msgid " Length Number % of total Coverage\n" msgstr " Довжина Номер % від загал. Покриття\n" -#: src/readelf.c:3278 +#: src/readelf.c:3627 #, c-format msgid " 0 %6 %5.1f%%\n" msgstr " 0 %6 %5.1f%%\n" -#: src/readelf.c:3285 +#: src/readelf.c:3634 #, c-format msgid "%7d %6 %5.1f%% %5.1f%%\n" msgstr "%7d %6 %5.1f%% %5.1f%%\n" -#: src/readelf.c:3298 +#: src/readelf.c:3647 #, c-format msgid "" " Average number of tests: successful lookup: %f\n" @@ -5156,37 +5179,37 @@ msgstr "" " Середня кількість тестів: успішний пошук: %f\n" "\t\t\t неуспішний пошук: %f\n" -#: src/readelf.c:3316 src/readelf.c:3380 src/readelf.c:3446 +#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795 #, c-format msgid "cannot get data for section %d: %s" msgstr "не вдалося отримати дані для розділу %d: %s" -#: src/readelf.c:3324 +#: src/readelf.c:3673 #, c-format msgid "invalid data in sysv.hash section %d" msgstr "некоректні дані у розділі sysv.hash %d" -#: src/readelf.c:3353 +#: src/readelf.c:3702 #, c-format msgid "invalid chain in sysv.hash section %d" msgstr "некоректний ланцюжок у розділі sysv.hash %d" -#: src/readelf.c:3388 +#: src/readelf.c:3737 #, c-format msgid "invalid data in sysv.hash64 section %d" msgstr "некоректні дані у розділі sysv.hash64 %d" -#: src/readelf.c:3419 +#: src/readelf.c:3768 #, c-format msgid "invalid chain in sysv.hash64 section %d" msgstr "некоректний ланцюжок у розділі sysv.hash64 %d" -#: src/readelf.c:3455 +#: src/readelf.c:3804 #, c-format msgid "invalid data in gnu.hash section %d" msgstr "некоректні дані у розділі gnu.hash %d" -#: src/readelf.c:3521 +#: src/readelf.c:3870 #, c-format msgid "" " Symbol Bias: %u\n" @@ -5196,7 +5219,7 @@ msgstr "" " Розмір бітової маски: %zu байтів %%% встановлених бітів зсув " "2-го хешу: %u\n" -#: src/readelf.c:3606 +#: src/readelf.c:3955 #, c-format msgid "" "\n" @@ -5217,7 +5240,7 @@ msgstr[2] "" "Розділ списку бібліотек [%2zu] «%s» за зміщенням %#0 містить %d " "записів:\n" -#: src/readelf.c:3620 +#: src/readelf.c:3969 msgid "" " Library Time Stamp Checksum Version " "Flags" @@ -5225,7 +5248,7 @@ msgstr "" " Бібліотека Часовий штамп Версія суми " "Прапорці" -#: src/readelf.c:3680 +#: src/readelf.c:4029 #, c-format msgid "" "\n" @@ -5236,101 +5259,107 @@ msgstr "" "Розділ атрибутів об’єктів [%2zu] «%s» з % байтів за зміщенням " "%#0:\n" -#: src/readelf.c:3697 +#: src/readelf.c:4046 msgid " Owner Size\n" msgstr " Власник Розмір\n" -#: src/readelf.c:3721 +#: src/readelf.c:4070 #, c-format msgid " %-13s %4\n" msgstr " %-13s %4\n" #. Unknown subsection, print and skip. -#: src/readelf.c:3760 +#: src/readelf.c:4109 #, c-format msgid " %-4u %12\n" msgstr " %-4u %12\n" #. Tag_File -#: src/readelf.c:3765 +#: src/readelf.c:4114 #, c-format msgid " File: %11\n" msgstr " Файл: %11\n" -#: src/readelf.c:3814 +#: src/readelf.c:4164 #, c-format msgid " %s: %, %s\n" msgstr " %s: %, %s\n" -#: src/readelf.c:3817 +#: src/readelf.c:4167 #, c-format msgid " %s: %\n" msgstr " %s: %\n" -#: src/readelf.c:3820 +#: src/readelf.c:4170 #, c-format msgid " %s: %s\n" msgstr " %s: %s\n" -#: src/readelf.c:3830 +#: src/readelf.c:4180 #, c-format msgid " %u: %\n" msgstr " %u: %\n" -#: src/readelf.c:3833 +#: src/readelf.c:4183 #, c-format msgid " %u: %s\n" msgstr " %u: %s\n" -#: src/readelf.c:3903 +#: src/readelf.c:4221 +#, fuzzy +#| msgid "couldn't get shdr for group section: %s" +msgid "Couldn't get data from section" +msgstr "не вдалося отримати shdr для розділу груп: %s" + +#: src/readelf.c:4286 msgid "sprintf failure" msgstr "помилка sprintf" -#: src/readelf.c:4387 +#: src/readelf.c:4770 msgid "empty block" msgstr "порожній блок" -#: src/readelf.c:4390 +#: src/readelf.c:4773 #, c-format msgid "%zu byte block:" msgstr "%zu-байтовий блок:" -#: src/readelf.c:4868 +#: src/readelf.c:5251 #, c-format msgid "%*s[%2] %s \n" msgstr "%*s[%2] %s <ОБРІЗАНО>\n" -#: src/readelf.c:5028 +#: src/readelf.c:5423 #, c-format msgid "%s %# used with different address sizes" msgstr "%s %# використано з різними розмірами адрес" -#: src/readelf.c:5035 +#: src/readelf.c:5430 #, c-format msgid "%s %# used with different offset sizes" msgstr "%s %# використано з різними розмірами зміщень" -#: src/readelf.c:5042 +#: src/readelf.c:5437 #, c-format msgid "%s %# used with different base addresses" msgstr "%s %# використано з різними базовими адресами" -#: src/readelf.c:5049 +#: src/readelf.c:5444 #, c-format msgid "%s %# used with different attribute %s and %s" msgstr "%s %# використано з різними атрибутами, %s і %s" -#: src/readelf.c:5149 +#: src/readelf.c:5544 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ У РЕШТІ РОЗДІЛУ>\n" -#: src/readelf.c:5157 +#: src/readelf.c:5552 #, c-format msgid " [%6tx] ... % bytes ...\n" msgstr " [%6tx] <НЕВИКОРИСТОВУВАНІ ДАНІ> ... % байтів ...\n" -#: src/readelf.c:5260 +#: src/readelf.c:5658 #, c-format msgid "" "\n" @@ -5341,7 +5370,7 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" " [ Код]\n" -#: src/readelf.c:5268 +#: src/readelf.c:5666 #, c-format msgid "" "\n" @@ -5350,20 +5379,20 @@ msgstr "" "\n" "Розділ скорочень за зміщенням %:\n" -#: src/readelf.c:5281 +#: src/readelf.c:5679 #, c-format msgid " *** error while reading abbreviation: %s\n" msgstr " *** помилка під час читання скорочення: %s\n" -#: src/readelf.c:5297 +#: src/readelf.c:5695 #, c-format msgid " [%5u] offset: %, children: %s, tag: %s\n" msgstr " [%5u] зміщення: %, дочірній: %s, мітка: %s\n" -#: src/readelf.c:5330 src/readelf.c:5639 src/readelf.c:5806 src/readelf.c:6191 -#: src/readelf.c:6807 src/readelf.c:8562 src/readelf.c:9308 src/readelf.c:9791 -#: src/readelf.c:10042 src/readelf.c:10208 src/readelf.c:10595 -#: src/readelf.c:10655 +#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567 +#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172 +#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970 +#: src/readelf.c:11041 #, c-format msgid "" "\n" @@ -5372,54 +5401,49 @@ msgstr "" "\n" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" -#: src/readelf.c:5343 -#, c-format -msgid "cannot get .debug_addr section data: %s" -msgstr "не вдалося отримати дані розділу .debug_addr: %s" - -#: src/readelf.c:5443 src/readelf.c:5467 src/readelf.c:5851 src/readelf.c:9353 +#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740 #, c-format msgid " Length: %8\n" msgstr " Довжина: %8\n" -#: src/readelf.c:5445 src/readelf.c:5482 src/readelf.c:5864 src/readelf.c:9366 +#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753 #, c-format msgid " DWARF version: %8\n" msgstr " версія DWARF: %8\n" -#: src/readelf.c:5446 src/readelf.c:5491 src/readelf.c:5873 src/readelf.c:9375 +#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762 #, c-format msgid " Address size: %8\n" msgstr " Розмір адреси: %8\n" -#: src/readelf.c:5448 src/readelf.c:5501 src/readelf.c:5883 src/readelf.c:9385 +#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772 #, c-format msgid " Segment size: %8\n" msgstr "" " Розмір сегмента: %8\n" "\n" -#: src/readelf.c:5486 src/readelf.c:5868 src/readelf.c:9370 src/readelf.c:10787 +#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163 #, c-format msgid "Unknown version" msgstr "Невідома версія" -#: src/readelf.c:5496 src/readelf.c:5709 src/readelf.c:5878 src/readelf.c:9380 +#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767 #, c-format msgid "unsupported address size" msgstr "непідтримуваний розмір адреси" -#: src/readelf.c:5507 src/readelf.c:5720 src/readelf.c:5888 src/readelf.c:9390 +#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777 #, c-format msgid "unsupported segment size" msgstr "непідтримуваний розмір сегмента" -#: src/readelf.c:5560 src/readelf.c:5634 +#: src/readelf.c:5952 #, c-format msgid "cannot get .debug_aranges content: %s" msgstr "не вдалося отримати дані get .debug_aranges: %s" -#: src/readelf.c:5575 +#: src/readelf.c:5967 #, c-format msgid "" "\n" @@ -5437,12 +5461,12 @@ msgstr[2] "" "\n" "Розділ DWARF [%2zu] «%s» за зміщенням %# містить %zu записів:\n" -#: src/readelf.c:5606 +#: src/readelf.c:5998 #, c-format msgid " [%*zu] ???\n" msgstr " [%*zu] ???\n" -#: src/readelf.c:5608 +#: src/readelf.c:6000 #, c-format msgid "" " [%*zu] start: %0#*, length: %5, CU DIE offset: %6\n" @@ -5450,7 +5474,7 @@ msgstr "" " [%*zu] початок: %0#*, довжина: %5, зміщення CU DIE: " "%6\n" -#: src/readelf.c:5652 src/readelf.c:8589 +#: src/readelf.c:6038 src/readelf.c:8981 #, c-format msgid "" "\n" @@ -5459,13 +5483,13 @@ msgstr "" "\n" "Таблиця за зміщенням %zu:\n" -#: src/readelf.c:5656 src/readelf.c:5832 src/readelf.c:6831 src/readelf.c:8600 -#: src/readelf.c:9334 +#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992 +#: src/readelf.c:9721 #, c-format msgid "invalid data in section [%zu] '%s'" msgstr "некоректні дані у розділі [%zu] «%s»" -#: src/readelf.c:5672 +#: src/readelf.c:6058 #, c-format msgid "" "\n" @@ -5474,27 +5498,27 @@ msgstr "" "\n" " Довжина: %6\n" -#: src/readelf.c:5684 +#: src/readelf.c:6070 #, c-format msgid " DWARF version: %6\n" msgstr " версія DWARF: %6\n" -#: src/readelf.c:5688 +#: src/readelf.c:6074 #, c-format msgid "unsupported aranges version" msgstr "непідтримувана версія aranges" -#: src/readelf.c:5699 +#: src/readelf.c:6085 #, c-format msgid " CU offset: %6\n" msgstr " зміщення CU: %6\n" -#: src/readelf.c:5705 +#: src/readelf.c:6091 #, c-format msgid " Address size: %6\n" msgstr " Розмір адреси: %6\n" -#: src/readelf.c:5716 +#: src/readelf.c:6102 #, c-format msgid "" " Segment size: %6\n" @@ -5503,17 +5527,12 @@ msgstr "" " Розмір сегмента: %6\n" "\n" -#: src/readelf.c:5771 +#: src/readelf.c:6157 #, c-format msgid " %zu padding bytes\n" msgstr " %zu байтів доповнення\n" -#: src/readelf.c:5815 -#, c-format -msgid "cannot get .debug_rnglists content: %s" -msgstr "не вдалося отримати вміст .debug_rnglists: %s" - -#: src/readelf.c:5838 src/readelf.c:9340 +#: src/readelf.c:6219 src/readelf.c:9727 #, c-format msgid "" "Table at Offset 0x%:\n" @@ -5522,42 +5541,42 @@ msgstr "" "Таблиця за зміщенням 0x%:\n" "\n" -#: src/readelf.c:5893 src/readelf.c:9395 +#: src/readelf.c:6274 src/readelf.c:9782 #, c-format msgid " Offset entries: %8\n" msgstr " Записи зміщення: %8\n" -#: src/readelf.c:5909 src/readelf.c:9411 +#: src/readelf.c:6290 src/readelf.c:9798 #, c-format msgid " Unknown CU base: " msgstr " Невідома основа CU: " -#: src/readelf.c:5911 src/readelf.c:9413 +#: src/readelf.c:6292 src/readelf.c:9800 #, c-format msgid " CU [%6] base: " msgstr " Основа CU [%6]: " -#: src/readelf.c:5917 src/readelf.c:9419 +#: src/readelf.c:6298 src/readelf.c:9806 #, c-format msgid " Not associated with a CU.\n" msgstr " Не пов'язано із CU.\n" -#: src/readelf.c:5928 src/readelf.c:9430 +#: src/readelf.c:6309 src/readelf.c:9817 #, c-format msgid "too many offset entries for unit length" msgstr "забагато записів зсуву для довжини модуля" -#: src/readelf.c:5932 src/readelf.c:9434 +#: src/readelf.c:6313 src/readelf.c:9821 #, c-format msgid " Offsets starting at 0x%:\n" msgstr " Зміщення, що починаються з 0x%:\n" -#: src/readelf.c:5984 +#: src/readelf.c:6365 #, c-format msgid "invalid range list data" msgstr "некоректні дані списку діапазонів" -#: src/readelf.c:6169 src/readelf.c:9769 +#: src/readelf.c:6550 src/readelf.c:10156 #, c-format msgid "" " %zu padding bytes\n" @@ -5566,12 +5585,7 @@ msgstr "" " %zu байтів доповнення\n" "\n" -#: src/readelf.c:6186 -#, c-format -msgid "cannot get .debug_ranges content: %s" -msgstr "не вдалося отримати дані .debug_ranges: %s" - -#: src/readelf.c:6222 src/readelf.c:9824 +#: src/readelf.c:6598 src/readelf.c:10205 #, c-format msgid "" "\n" @@ -5580,7 +5594,7 @@ msgstr "" "\n" " Невідома основа CU: " -#: src/readelf.c:6224 src/readelf.c:9826 +#: src/readelf.c:6600 src/readelf.c:10207 #, c-format msgid "" "\n" @@ -5589,31 +5603,31 @@ msgstr "" "\n" " Основа CU [%6]: " -#: src/readelf.c:6233 src/readelf.c:9852 src/readelf.c:9878 +#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259 #, c-format msgid " [%6tx] \n" msgstr " [%6tx] <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:6258 src/readelf.c:9962 +#: src/readelf.c:6634 src/readelf.c:10343 #, fuzzy msgid "base address" msgstr " встановити адресу у значення " -#: src/readelf.c:6268 src/readelf.c:9972 +#: src/readelf.c:6644 src/readelf.c:10353 #, c-format msgid " [%6tx] empty list\n" msgstr " [%6tx] порожній список\n" -#: src/readelf.c:6528 +#: src/readelf.c:6908 msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:6785 +#: src/readelf.c:7165 #, c-format msgid "cannot get ELF: %s" msgstr "не вдалося отримати ELF: %s" -#: src/readelf.c:6803 +#: src/readelf.c:7189 #, c-format msgid "" "\n" @@ -5622,7 +5636,7 @@ msgstr "" "\n" "Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#:\n" -#: src/readelf.c:6853 +#: src/readelf.c:7239 #, c-format msgid "" "\n" @@ -5631,65 +5645,65 @@ msgstr "" "\n" " [%6tx] нульовий переривач\n" -#: src/readelf.c:6954 src/readelf.c:7108 +#: src/readelf.c:7343 src/readelf.c:7497 #, c-format msgid "invalid augmentation length" msgstr "некоректна довжина збільшення" -#: src/readelf.c:6969 +#: src/readelf.c:7358 msgid "FDE address encoding: " msgstr "Кодування адреси FDE: " -#: src/readelf.c:6975 +#: src/readelf.c:7364 msgid "LSDA pointer encoding: " msgstr "Кодування вказівника LSDA: " -#: src/readelf.c:7085 +#: src/readelf.c:7474 #, c-format msgid " (offset: %#)" msgstr " (зміщення: %#)" -#: src/readelf.c:7092 +#: src/readelf.c:7481 #, c-format msgid " (end offset: %#)" msgstr " (зміщення від кінця: %#)" -#: src/readelf.c:7129 +#: src/readelf.c:7518 #, c-format msgid " %-26sLSDA pointer: %#\n" msgstr " %-26sвказівник LSDA: %#\n" -#: src/readelf.c:7214 +#: src/readelf.c:7603 #, c-format msgid "DIE [%] cannot get attribute code: %s" msgstr "DIE [%] не вдалося отримати код атрибута: %s" -#: src/readelf.c:7224 +#: src/readelf.c:7613 #, c-format msgid "DIE [%] cannot get attribute form: %s" msgstr "DIE [%] не вдалося отримати форму атрибута: %s" -#: src/readelf.c:7246 +#: src/readelf.c:7635 #, c-format msgid "DIE [%] cannot get attribute '%s' (%s) value: %s" msgstr "DIE [%] не вдалося отримати значення атрибута «%s» (%s): %s" -#: src/readelf.c:7576 +#: src/readelf.c:7965 #, c-format msgid "invalid file (%): %s" msgstr "некоректний файл (%): %s" -#: src/readelf.c:7580 +#: src/readelf.c:7969 #, c-format msgid "no srcfiles for CU [%]" msgstr "немає srcfiles для CU [%]" -#: src/readelf.c:7584 +#: src/readelf.c:7973 #, c-format msgid "couldn't get DWARF CU: %s" msgstr "не вдалося отримати CU DWARF: %s" -#: src/readelf.c:7899 +#: src/readelf.c:8295 #, c-format msgid "" "\n" @@ -5700,12 +5714,12 @@ msgstr "" "Розділ DWARF [%2zu] «%s» за зміщенням %#:\n" " [Зміщення]\n" -#: src/readelf.c:7949 +#: src/readelf.c:8345 #, c-format msgid "cannot get next unit: %s" msgstr "не вдалося отримати наступний модуль: %s" -#: src/readelf.c:7969 +#: src/readelf.c:8365 #, c-format msgid "" " Type unit at offset %:\n" @@ -5718,7 +5732,7 @@ msgstr "" "%, Розмір зміщення: %\n" " Підпис типу: %#, Зміщення типу: %# [%]\n" -#: src/readelf.c:7981 +#: src/readelf.c:8377 #, c-format msgid "" " Compilation unit at offset %:\n" @@ -5729,38 +5743,38 @@ msgstr "" " Версія: %, Зміщення розділу скорочень: %, Адреса: %, " "Зміщення: %\n" -#: src/readelf.c:7991 src/readelf.c:8152 +#: src/readelf.c:8387 src/readelf.c:8548 #, c-format msgid " Unit type: %s (%)" msgstr " Тип модуля: %s (%)" -#: src/readelf.c:8018 +#: src/readelf.c:8414 #, c-format msgid "unknown version (%d) or unit type (%d)" msgstr "невідома версія (%d) або тип модуля (%d)" -#: src/readelf.c:8047 +#: src/readelf.c:8443 #, c-format msgid "cannot get DIE offset: %s" msgstr "не вдалося отримати зміщення DIE: %s" -#: src/readelf.c:8056 +#: src/readelf.c:8452 #, c-format msgid "cannot get tag of DIE at offset [%] in section '%s': %s" msgstr "" "не вдалося отримати мітку DIE за зміщенням [%] у розділі «%s»: %s" -#: src/readelf.c:8092 +#: src/readelf.c:8488 #, c-format msgid "cannot get next DIE: %s\n" msgstr "не вдалося визначити наступний DIE: %s\n" -#: src/readelf.c:8100 +#: src/readelf.c:8496 #, c-format msgid "cannot get next DIE: %s" msgstr "не вдалося визначити наступний DIE: %s" -#: src/readelf.c:8144 +#: src/readelf.c:8540 #, c-format msgid "" " Split compilation unit at offset %:\n" @@ -5771,7 +5785,7 @@ msgstr "" " Версія: %, Зміщення розділу скорочень: %, Адреса: %, " "Зміщення: %\n" -#: src/readelf.c:8196 +#: src/readelf.c:8592 #, c-format msgid "" "\n" @@ -5782,18 +5796,13 @@ msgstr "" "Розділ DWARF [%2zu] «%s» зі зміщенням %#:\n" "\n" -#: src/readelf.c:8528 +#: src/readelf.c:8924 #, c-format msgid "unknown form: %s" msgstr "невідома форма: %s" -#: src/readelf.c:8576 -#, c-format -msgid "cannot get line data section data: %s" -msgstr "не вдалося отримати дані розділу лінійних даних: %s" - #. Print what we got so far. -#: src/readelf.c:8680 +#: src/readelf.c:9072 #, c-format msgid "" "\n" @@ -5826,27 +5835,27 @@ msgstr "" "\n" "Коди операцій:\n" -#: src/readelf.c:8702 +#: src/readelf.c:9094 #, c-format msgid "cannot handle .debug_line version: %u\n" msgstr "не вдалося обробити версію .debug_line: %u\n" -#: src/readelf.c:8710 +#: src/readelf.c:9102 #, c-format msgid "cannot handle address size: %u\n" msgstr "не вдалося обробити розмір адреси: %u\n" -#: src/readelf.c:8718 +#: src/readelf.c:9110 #, c-format msgid "cannot handle segment selector size: %u\n" msgstr "не вдалося обробити розмір селектора сегментів: %u\n" -#: src/readelf.c:8728 +#: src/readelf.c:9120 #, c-format msgid "invalid data at offset %tu in section [%zu] '%s'" msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»" -#: src/readelf.c:8743 +#: src/readelf.c:9135 #, c-format msgid " [%*] %hhu argument\n" msgid_plural " [%*] %hhu arguments\n" @@ -5854,7 +5863,7 @@ msgstr[0] " [%*] %hhu аргумент\n" msgstr[1] " [%*] %hhu аргументи\n" msgstr[2] " [%*] %hhu аргументів\n" -#: src/readelf.c:8754 +#: src/readelf.c:9146 msgid "" "\n" "Directory table:" @@ -5862,12 +5871,12 @@ msgstr "" "\n" "Таблиця каталогу:" -#: src/readelf.c:8760 src/readelf.c:8837 +#: src/readelf.c:9152 src/readelf.c:9229 #, c-format msgid " [" msgstr " [" -#: src/readelf.c:8831 +#: src/readelf.c:9223 msgid "" "\n" "File name table:" @@ -5875,11 +5884,11 @@ msgstr "" "\n" " Таблиця назв файлів:" -#: src/readelf.c:8892 +#: src/readelf.c:9284 msgid " Entry Dir Time Size Name" msgstr " Запис Кат Час Розмір Назва" -#: src/readelf.c:8938 +#: src/readelf.c:9330 #, fuzzy msgid "" "\n" @@ -5888,7 +5897,7 @@ msgstr "" "\n" "Оператори номерів рядків:" -#: src/readelf.c:8942 +#: src/readelf.c:9334 msgid "" "\n" "Line number statements:" @@ -5896,129 +5905,129 @@ msgstr "" "\n" "Оператори номерів рядків:" -#: src/readelf.c:8957 +#: src/readelf.c:9349 #, c-format msgid "invalid maximum operations per instruction is zero" msgstr "некоректну кількість операцій на інструкцію прирівняно до нуля" -#: src/readelf.c:8991 +#: src/readelf.c:9383 #, c-format msgid " special opcode %u: address+%u = " msgstr " спеціальний код операції %u: адреса+%u = " -#: src/readelf.c:8995 +#: src/readelf.c:9387 #, c-format msgid ", op_index = %u, line%+d = %zu\n" msgstr ", індекс_оп = %u, рядок%+d = %zu\n" -#: src/readelf.c:8998 +#: src/readelf.c:9390 #, c-format msgid ", line%+d = %zu\n" msgstr ", рядок%+d = %zu\n" -#: src/readelf.c:9016 +#: src/readelf.c:9408 #, c-format msgid " extended opcode %u: " msgstr " розширений код операції %u: " -#: src/readelf.c:9021 +#: src/readelf.c:9413 msgid " end of sequence" msgstr " кінець послідовності" -#: src/readelf.c:9039 +#: src/readelf.c:9431 #, c-format msgid " set address to " msgstr " встановити адресу у значення " -#: src/readelf.c:9067 +#: src/readelf.c:9459 #, c-format msgid " define new file: dir=%u, mtime=%, length=%, name=%s\n" msgstr "" " визначення нового файла: dir=%u, mtime=%, довжина=%, " "назва=%s\n" -#: src/readelf.c:9081 +#: src/readelf.c:9473 #, c-format msgid " set discriminator to %u\n" msgstr " встановити розрізнення для %u\n" -#: src/readelf.c:9108 +#: src/readelf.c:9500 #, c-format msgid " set inlined context %u, function name %s (0x%x)\n" msgstr "" -#: src/readelf.c:9132 +#: src/readelf.c:9524 #, fuzzy, c-format #| msgid "Also show function names" msgid " set function name %s (0x%x)\n" msgstr "Показувати також назви функцій" #. Unknown, ignore it. -#: src/readelf.c:9139 +#: src/readelf.c:9531 msgid " unknown opcode" msgstr " невідомий код операції" #. Takes no argument. -#: src/readelf.c:9151 +#: src/readelf.c:9543 msgid " copy" msgstr " копія" -#: src/readelf.c:9162 +#: src/readelf.c:9554 #, c-format msgid " advance address by %u to " msgstr " збільшення адреси на %u до " -#: src/readelf.c:9166 src/readelf.c:9227 +#: src/readelf.c:9558 src/readelf.c:9619 #, c-format msgid ", op_index to %u" msgstr ", op_index до %u" -#: src/readelf.c:9178 +#: src/readelf.c:9570 #, c-format msgid " advance line by constant %d to %\n" msgstr " просувати рядок на сталу %d до %\n" -#: src/readelf.c:9188 +#: src/readelf.c:9580 #, c-format msgid " set file to %\n" msgstr " встановити файл у %\n" -#: src/readelf.c:9199 +#: src/readelf.c:9591 #, c-format msgid " set column to %\n" msgstr " встановити значення стовпчика %\n" -#: src/readelf.c:9206 +#: src/readelf.c:9598 #, c-format msgid " set '%s' to %\n" msgstr " встановити «%s» у %\n" #. Takes no argument. -#: src/readelf.c:9212 +#: src/readelf.c:9604 msgid " set basic block flag" msgstr " встановити прапорець базового блоку" -#: src/readelf.c:9223 +#: src/readelf.c:9615 #, c-format msgid " advance address by constant %u to " msgstr " збільшити адресу на сталу величину %u до " -#: src/readelf.c:9243 +#: src/readelf.c:9635 #, c-format msgid " advance address by fixed value %u to \n" msgstr " збільшити адресу на фіксовану величину %u до \n" #. Takes no argument. -#: src/readelf.c:9253 +#: src/readelf.c:9645 msgid " set prologue end flag" msgstr " встановити прапорець кінця вступу" #. Takes no argument. -#: src/readelf.c:9258 +#: src/readelf.c:9650 msgid " set epilogue begin flag" msgstr " встановити прапорець початку епілогу" -#: src/readelf.c:9268 +#: src/readelf.c:9660 #, c-format msgid " set isa to %u\n" msgstr " встановити isa у %u\n" @@ -6026,7 +6035,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:9277 +#: src/readelf.c:9669 #, c-format msgid " unknown opcode with % parameter:" msgid_plural " unknown opcode with % parameters:" @@ -6034,102 +6043,87 @@ msgstr[0] " невідомий код операції з % параме msgstr[1] " невідомий код операції з % параметрами:" msgstr[2] " невідомий код операції з % параметрами:" -#: src/readelf.c:9317 -#, c-format -msgid "cannot get .debug_loclists content: %s" -msgstr "не вдалося отримати вміст .debug_loclists: %s" - -#: src/readelf.c:9483 +#: src/readelf.c:9870 #, fuzzy, c-format msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:9523 +#: src/readelf.c:9910 #, c-format msgid "invalid loclists data" msgstr "некоректні дані loclists" -#: src/readelf.c:9786 -#, c-format -msgid "cannot get .debug_loc content: %s" -msgstr "не вдалося отримати вміст .debug_loc: %s" - -#: src/readelf.c:9999 src/readelf.c:11043 +#: src/readelf.c:10380 src/readelf.c:11425 msgid " \n" msgstr " <НЕКОРЕКТНІ ДАНІ>\n" -#: src/readelf.c:10054 src/readelf.c:10217 -#, c-format -msgid "cannot get macro information section data: %s" -msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s" - -#: src/readelf.c:10134 +#: src/readelf.c:10511 #, c-format msgid "%*s*** non-terminated string at end of section" msgstr "%*s*** незавершений рядок наприкінці розділу" -#: src/readelf.c:10157 +#: src/readelf.c:10534 #, c-format msgid "%*s*** missing DW_MACINFO_start_file argument at end of section" msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу" -#: src/readelf.c:10258 +#: src/readelf.c:10629 #, c-format msgid " Offset: 0x%\n" msgstr " Зміщення: 0x%\n" -#: src/readelf.c:10270 +#: src/readelf.c:10641 #, c-format msgid " Version: %\n" msgstr " Версія: %\n" -#: src/readelf.c:10276 src/readelf.c:11163 +#: src/readelf.c:10647 src/readelf.c:11546 #, c-format msgid " unknown version, cannot parse section\n" msgstr " невідома версія, не вдалося обробити розділ\n" -#: src/readelf.c:10283 +#: src/readelf.c:10654 #, c-format msgid " Flag: 0x%" msgstr " Прапорець: 0x%" -#: src/readelf.c:10312 +#: src/readelf.c:10683 #, c-format msgid " Offset length: %\n" msgstr " Довжина зміщення: %\n" -#: src/readelf.c:10320 +#: src/readelf.c:10691 #, c-format msgid " .debug_line offset: 0x%\n" msgstr " зміщення .debug_line: 0x%\n" -#: src/readelf.c:10345 +#: src/readelf.c:10716 #, c-format msgid " extension opcode table, % items:\n" msgstr " таблиця кодів операцій розширень, записів — %:\n" -#: src/readelf.c:10352 +#: src/readelf.c:10723 #, c-format msgid " [%]" msgstr " [%]" -#: src/readelf.c:10364 +#: src/readelf.c:10735 #, c-format msgid " % arguments:" msgstr " % аргументів:" -#: src/readelf.c:10379 +#: src/readelf.c:10750 #, c-format msgid " no arguments." msgstr " немає аргументів." -#: src/readelf.c:10580 +#: src/readelf.c:10951 #, c-format msgid " [%5d] DIE offset: %6, CU DIE offset: %6, name: %s\n" msgstr "" " [%5d] зміщення DIE: %6, зміщення CU DIE: %6, назва: %s\n" -#: src/readelf.c:10624 +#: src/readelf.c:11006 #, c-format msgid "" "\n" @@ -6141,42 +6135,37 @@ msgstr "" " %*s Рядок\n" #. TRANS: the debugstr| prefix makes the string unique. -#: src/readelf.c:10629 +#: src/readelf.c:11011 msgctxt "debugstr" msgid "Offset" msgstr "" -#: src/readelf.c:10639 +#: src/readelf.c:11021 #, c-format msgid " *** error, missing string terminator\n" msgstr " *** помилка, пропущено роздільник рядків\n" -#: src/readelf.c:10668 -#, c-format -msgid "cannot get .debug_str_offsets section data: %s" -msgstr "не вдалося отримати дані розділу .debug_str_offsets: %s" - -#: src/readelf.c:10767 +#: src/readelf.c:11143 #, c-format msgid " Length: %8\n" msgstr " Довжина: %8\n" -#: src/readelf.c:10769 +#: src/readelf.c:11145 #, c-format msgid " Offset size: %8\n" msgstr " Розмір зсуву: %8\n" -#: src/readelf.c:10783 +#: src/readelf.c:11159 #, c-format msgid " DWARF version: %8\n" msgstr " версія DWARF: %8\n" -#: src/readelf.c:10792 +#: src/readelf.c:11168 #, c-format msgid " Padding: %8\n" msgstr " Заповнення: %8\n" -#: src/readelf.c:10846 +#: src/readelf.c:11222 #, c-format msgid "" "\n" @@ -6185,7 +6174,7 @@ msgstr "" "\n" "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n" -#: src/readelf.c:10948 +#: src/readelf.c:11324 #, c-format msgid "" "\n" @@ -6194,22 +6183,22 @@ msgstr "" "\n" "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n" -#: src/readelf.c:10971 +#: src/readelf.c:11347 #, c-format msgid " LPStart encoding: %#x " msgstr " Кодування LPStart: %#x " -#: src/readelf.c:10983 +#: src/readelf.c:11359 #, c-format msgid " TType encoding: %#x " msgstr " Кодування TType: %#x " -#: src/readelf.c:10998 +#: src/readelf.c:11376 #, c-format msgid " Call site encoding: %#x " msgstr " Кодування місця виклику:%#x " -#: src/readelf.c:11011 +#: src/readelf.c:11391 msgid "" "\n" " Call site table:" @@ -6217,7 +6206,7 @@ msgstr "" "\n" " Таблиця місця виклику:" -#: src/readelf.c:11025 +#: src/readelf.c:11407 #, c-format msgid "" " [%4u] Call site start: %#\n" @@ -6230,12 +6219,12 @@ msgstr "" " Місце застосування: %#\n" " Дія: %u\n" -#: src/readelf.c:11098 +#: src/readelf.c:11480 #, c-format msgid "invalid TType encoding" msgstr "некоректне кодування TType" -#: src/readelf.c:11125 +#: src/readelf.c:11507 #, c-format msgid "" "\n" @@ -6244,37 +6233,43 @@ msgstr "" "\n" "Розділ GDB [%2zu] «%s» за зміщенням %# містить % байтів:\n" -#: src/readelf.c:11154 +#: src/readelf.c:11536 #, c-format msgid " Version: %\n" msgstr " Версія: %\n" -#: src/readelf.c:11172 +#: src/readelf.c:11555 #, c-format msgid " CU offset: %#\n" msgstr " зміщення CU: %#\n" -#: src/readelf.c:11179 +#: src/readelf.c:11562 #, c-format msgid " TU offset: %#\n" msgstr " зміщення TU: %#\n" -#: src/readelf.c:11186 +#: src/readelf.c:11569 #, c-format msgid " address offset: %#\n" msgstr " зміщення адреси: %#\n" -#: src/readelf.c:11193 +#: src/readelf.c:11576 #, c-format msgid " symbol offset: %#\n" msgstr " зміщення символу: %#\n" -#: src/readelf.c:11200 +#: src/readelf.c:11586 +#, fuzzy, c-format +#| msgid " constant offset: %#\n" +msgid " shortcut offset: %#\n" +msgstr " стале зміщення: %#\n" + +#: src/readelf.c:11594 #, c-format msgid " constant offset: %#\n" msgstr " стале зміщення: %#\n" -#: src/readelf.c:11214 +#: src/readelf.c:11608 #, c-format msgid "" "\n" @@ -6283,7 +6278,7 @@ msgstr "" "\n" " Список CU зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:11239 +#: src/readelf.c:11633 #, c-format msgid "" "\n" @@ -6292,7 +6287,7 @@ msgstr "" "\n" " Список TU зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:11268 +#: src/readelf.c:11662 #, c-format msgid "" "\n" @@ -6301,7 +6296,7 @@ msgstr "" "\n" " Список адрес зі зміщенням %# містить %zu записів:\n" -#: src/readelf.c:11300 +#: src/readelf.c:11705 #, c-format msgid "" "\n" @@ -6310,18 +6305,40 @@ msgstr "" "\n" " Таблиця символів за зміщенням %# містить %zu позицій:\n" -#: src/readelf.c:11438 +#: src/readelf.c:11790 +#, fuzzy, c-format +#| msgid "" +#| "\n" +#| " Symbol table at offset %# contains %zu slots:\n" +msgid "" +"\n" +"Shortcut table at offset %# contains %zu slots:\n" +msgstr "" +"\n" +" Таблиця символів за зміщенням %# містить %zu позицій:\n" + +#: src/readelf.c:11802 +#, c-format +msgid "Language of main: %s\n" +msgstr "" + +#: src/readelf.c:11803 +#, c-format +msgid "Name of main: " +msgstr "" + +#: src/readelf.c:11886 #, c-format msgid "cannot get debug context descriptor: %s" msgstr "не вдалося отримати дескриптор контексту зневаджування: %s" -#: src/readelf.c:11804 src/readelf.c:12431 src/readelf.c:12541 -#: src/readelf.c:12598 +#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982 +#: src/readelf.c:13039 #, c-format msgid "cannot convert core note data: %s" msgstr "не вдалося перетворити дані запису ядра: %s" -#: src/readelf.c:12168 +#: src/readelf.c:12616 #, c-format msgid "" "\n" @@ -6330,21 +6347,21 @@ msgstr "" "\n" "%*s... <повторюється %u разів> ..." -#: src/readelf.c:12677 +#: src/readelf.c:13118 msgid " Owner Data size Type\n" msgstr " Власник Розм. даних Тип\n" -#: src/readelf.c:12705 +#: src/readelf.c:13146 #, c-format msgid " %-13.*s %9 %s\n" msgstr " %-13.*s %9 %s\n" -#: src/readelf.c:12757 +#: src/readelf.c:13198 #, c-format msgid "cannot get content of note: %s" msgstr "не вдалося отримати вміст нотатки: %s" -#: src/readelf.c:12790 +#: src/readelf.c:13231 #, c-format msgid "" "\n" @@ -6354,7 +6371,7 @@ msgstr "" "Розділ записів (note) [%2zu] «%s» з % байтів за зміщенням " "%#0:\n" -#: src/readelf.c:12813 +#: src/readelf.c:13254 #, c-format msgid "" "\n" @@ -6363,7 +6380,7 @@ msgstr "" "\n" "Сегмент записів з % байтів за зміщенням %#0:\n" -#: src/readelf.c:12860 +#: src/readelf.c:13301 #, c-format msgid "" "\n" @@ -6372,12 +6389,12 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міститься даних для створення дампу.\n" -#: src/readelf.c:12887 src/readelf.c:12938 +#: src/readelf.c:13328 src/readelf.c:13379 #, c-format msgid "cannot get data for section [%zu] '%s': %s" msgstr "не вдалося отримати дані для розділу [%zu] «%s»: %s" -#: src/readelf.c:12892 +#: src/readelf.c:13333 #, c-format msgid "" "\n" @@ -6386,7 +6403,7 @@ msgstr "" "\n" "Шіст. дамп розділу [%zu] «%s», % байтів за зміщенням %#0:\n" -#: src/readelf.c:12897 +#: src/readelf.c:13338 #, c-format msgid "" "\n" @@ -6397,7 +6414,7 @@ msgstr "" "Шіст. дамп розділу [%zu] «%s», % байтів (%zd нестиснено) за " "зміщенням %#0:\n" -#: src/readelf.c:12911 +#: src/readelf.c:13352 #, c-format msgid "" "\n" @@ -6406,7 +6423,7 @@ msgstr "" "\n" "У розділі [%zu] «%s» не міститься рядків для створення дампу.\n" -#: src/readelf.c:12943 +#: src/readelf.c:13384 #, c-format msgid "" "\n" @@ -6415,7 +6432,7 @@ msgstr "" "\n" "Розділ рядків [%zu] «%s» містить % байтів за зміщенням %#0:\n" -#: src/readelf.c:12948 +#: src/readelf.c:13389 #, c-format msgid "" "\n" @@ -6426,7 +6443,7 @@ msgstr "" "Рядок розділу [%zu] «%s» містить % байти (%zd нестиснено) на " "зміщенні %#0:\n" -#: src/readelf.c:12996 +#: src/readelf.c:13437 #, c-format msgid "" "\n" @@ -6435,7 +6452,7 @@ msgstr "" "\n" "розділу [%lu] не існує" -#: src/readelf.c:13026 +#: src/readelf.c:13467 #, c-format msgid "" "\n" @@ -6444,12 +6461,12 @@ msgstr "" "\n" "розділу «%s» не існує" -#: src/readelf.c:13081 +#: src/readelf.c:13522 #, c-format msgid "cannot get symbol index of archive '%s': %s" msgstr "не вдалося отримати покажчик символів архіву «%s»: %s" -#: src/readelf.c:13084 +#: src/readelf.c:13525 #, c-format msgid "" "\n" @@ -6458,7 +6475,7 @@ msgstr "" "\n" "У архіві «%s» немає покажчика символів\n" -#: src/readelf.c:13088 +#: src/readelf.c:13529 #, c-format msgid "" "\n" @@ -6467,12 +6484,12 @@ msgstr "" "\n" "Покажчик архіву «%s» містить %zu записів:\n" -#: src/readelf.c:13106 +#: src/readelf.c:13547 #, c-format msgid "cannot extract member at offset %zu in '%s': %s" msgstr "не вдалося видобути елемент за зміщенням %zu у «%s»: %s" -#: src/readelf.c:13111 +#: src/readelf.c:13552 #, c-format msgid "Archive member '%s' contains:\n" msgstr "Елемент архіву «%s» містить:\n" @@ -6989,7 +7006,7 @@ msgstr "%s: помилка під час оновлення заголовка E msgid "%s: error while getting shdrstrndx: %s" msgstr "%s: помилка під час отримання shdrstrndx: %s" -#: src/strip.c:1712 src/strip.c:2553 +#: src/strip.c:1712 src/strip.c:2552 #, c-format msgid "%s: error updating shdrstrndx: %s" msgstr "%s: помилка під час оновлення shdrstrndx: %s" @@ -7024,7 +7041,7 @@ msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]" msgstr "" "Неможливо вилучити символ [%zd] з розміщеної у пам'яті таблиці символів [%zd]" -#: src/strip.c:2469 src/strip.c:2577 +#: src/strip.c:2469 src/strip.c:2574 #, c-format msgid "while writing '%s': %s" msgstr "під час запису «%s»: %s" @@ -7044,22 +7061,22 @@ msgstr "під час обчислення контрольної суми дл msgid "%s: error while creating ELF header: %s" msgstr "%s: помилка під час створення заголовка ELF: %s" -#: src/strip.c:2562 +#: src/strip.c:2560 #, c-format msgid "%s: error while reading the file: %s" msgstr "%s: помилка під час читання файла: %s" -#: src/strip.c:2602 src/strip.c:2622 +#: src/strip.c:2599 src/strip.c:2619 #, c-format msgid "while writing '%s'" msgstr "під час спроби запису «%s»" -#: src/strip.c:2659 src/strip.c:2666 +#: src/strip.c:2656 src/strip.c:2663 #, c-format msgid "error while finishing '%s': %s" msgstr "помилка під час завершення «%s»: %s" -#: src/strip.c:2683 src/strip.c:2759 +#: src/strip.c:2680 src/strip.c:2756 #, c-format msgid "cannot set access and modification date of '%s'" msgstr "не вдалося встановити права доступу та дату зміни «%s»" @@ -7552,7 +7569,7 @@ msgid "" "section PATH SECTION-NAME\n" msgstr "" -#: tests/backtrace.c:483 +#: tests/backtrace.c:491 msgid "Run executable" msgstr "Запустити виконуваний файл" @@ -7564,6 +7581,43 @@ msgstr "Додатково вивести назви функцій" msgid "Show instances of inlined functions" msgstr "Вивести екземпляри вбудованих функцій" +#, c-format +#~ msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n" +#~ msgstr "" +#~ "розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Rela\n" + +#, c-format +#~ msgid "cannot get .debug_addr section data: %s" +#~ msgstr "не вдалося отримати дані розділу .debug_addr: %s" + +#, c-format +#~ msgid "cannot get .debug_rnglists content: %s" +#~ msgstr "не вдалося отримати вміст .debug_rnglists: %s" + +#, c-format +#~ msgid "cannot get .debug_ranges content: %s" +#~ msgstr "не вдалося отримати дані .debug_ranges: %s" + +#, c-format +#~ msgid "cannot get line data section data: %s" +#~ msgstr "не вдалося отримати дані розділу лінійних даних: %s" + +#, c-format +#~ msgid "cannot get .debug_loclists content: %s" +#~ msgstr "не вдалося отримати вміст .debug_loclists: %s" + +#, c-format +#~ msgid "cannot get .debug_loc content: %s" +#~ msgstr "не вдалося отримати вміст .debug_loc: %s" + +#, c-format +#~ msgid "cannot get macro information section data: %s" +#~ msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s" + +#, c-format +#~ msgid "cannot get .debug_str_offsets section data: %s" +#~ msgstr "не вдалося отримати дані розділу .debug_str_offsets: %s" + #, c-format #~ msgid "cannot allocate memory" #~ msgstr "не вдалося розподілити пам’ять" diff --git a/src/ChangeLog b/src/ChangeLog index d3399a5caf9240aff07c7e3c45e4b12d1cf6b869..ae62f4ed20f66bf2574043e9a38901d6eb4dc3b3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,78 @@ +2023-03-27 Di Chen + + * readelf.c (options): Support dynamic symtab print with '-Ds'. + (process_symtab): New function. + (handle_dynamic_symtab): Likewise. + (handle_symtab): Return true if symtab was printed. Move printing + code to process_symtab and call that function. + (print_symtab): Call handle_dynamic_symtab for SHT_DYNSYM when + using dynamic segment. + (enum dyn_idx): Include i_symtab_shndx, i_verneednum and + i_verdefnum. + (process_elf_file): Only call print_symtab for SHT_SYMTAB when not + use_dynamic_segment. + (get_dynscn_addrs): Handle DT_VERDEFNUM, DT_VERNEEDNUM and + DT_SYMTAB_SHNDX. + +2023-03-03 Mark Wielaard + + * readelf (process_elf_file): ebl_closebackend only after + comparing ebl pointer. + +2023-02-12 Mark Wielaard + + * readelf.c (print_attributes): Add comment about check. + (read_encoded): Check readp >= endp before reading + DW_EH_PE_uleb128 and DW_EH_PE_sleb128. + * elflint.c (check_attributes): Check r >= q before reading + uleb128. + (print_debug_frame_section): Check augmentation length can be read + as uleb128. + (print_debug_exception_table): Likewise for ttype_base_offset, + call_site_table_len and action. + +2023-01-22 Mark Wielaard + + * addr2line.c (options): Separate --demangle and -C. + (parse_opt): Ignore 'b'. + +2023-01-10 Mark Wielaard + + * readelf.c (get_debug_elf_data): New function. + (print_debug_abbrev_section): Use get_debug_elf_data. + (print_debug_addr_section): Likewise. + (print_debug_aranges_section): Likewise. + (print_debug_rnglists_section): Likewise. + (print_debug_ranges_section): Likewise. + (print_debug_frame_section): Likewise. + (print_debug_units): Likewise. + (print_debug_line_section): Likewise. + (print_debug_loclists_section): Likewise. + (print_debug_loc_section): Likewise. + (print_debug_macinfo_section): Likewise. + (print_debug_macro_section): Likewise. + (print_debug_str_section): Likewise. + (print_debug_str_offsets_section): Likewise. + (print_debug_pubnames_section): Likewise. + +2022-12-21 Shahab Vahedi + + * elflint.c (valid_e_machine): Add EM_ARCV2. + +2022-12-02 Hengqi Chen + + * elflint.c (valid_e_machine): Add EM_LOONGARCH. + +2022-11-03 Mark Wielaard + + * readelf.c (get_dynscn_addrs): Check gelf_getdyn doesn't + return NULL. + +2022-11-03 Mark Wielaard + + * readelf.c (handle_dynamic): Check phdr != NULL when + use_dynamic_segment, otherwise check shdr != NULL. + 2022-10-28 Arsen Arsenović * readelf.c (options): Add Binutils-style --syms alias. diff --git a/src/Makefile.am b/src/Makefile.am index 6cc019da0856c39ee84ebad9480a643bba26cd25..d3d9d408b5384bd55207e9a99e86640294f4e9a8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,7 +27,7 @@ AM_LDFLAGS = -Wl,-rpath-link,../libelf:../libdw $(STACK_USAGE_NO_ERROR) bin_PROGRAMS = readelf nm size strip elflint findtextrel addr2line \ elfcmp objdump ranlib strings ar unstrip stack elfcompress \ - elfclassify + elfclassify srcfiles noinst_LIBRARIES = libar.a @@ -42,7 +42,7 @@ CLEANFILES += make-debug-archive if BUILD_STATIC libasm = ../libasm/libasm.a libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) -ldl -lpthread -libelf = ../libelf/libelf.a -lz +libelf = ../libelf/libelf.a -lz $(zstd_LIBS) else libasm = ../libasm/libasm.so libdw = ../libdw/libdw.so @@ -84,6 +84,8 @@ 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) elfclassify_LDADD = $(libelf) $(libdw) $(libeu) $(argp_LDADD) +srcfiles_SOURCES = srcfiles.cxx +srcfiles_LDADD = $(libdw) $(libelf) $(libeu) $(argp_LDADD) installcheck-binPROGRAMS: $(bin_PROGRAMS) bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ diff --git a/src/addr2line.c b/src/addr2line.c index 7768b266fd8dbde04ee351c9389bec27569e49de..d902d791c2391ed3b6b85300cf5db3a6b6e5c26d 100644 --- a/src/addr2line.c +++ b/src/addr2line.c @@ -1,6 +1,6 @@ /* Locate source files and line information for given addresses Copyright (C) 2005-2010, 2012, 2013, 2015 Red Hat, Inc. - Copyright (C) 2022 Mark J. Wielaard + Copyright (C) 2022, 2023 Mark J. Wielaard This file is part of elfutils. Written by Ulrich Drepper , 2005. @@ -71,8 +71,9 @@ static const struct argp_option options[] = { "inlines", 'i', NULL, 0, N_("Show all source locations that caused inline expansion of subroutines at the address."), 0 }, - { "demangle", 'C', "ARG", OPTION_ARG_OPTIONAL, + { "demangle", OPT_DEMANGLER, "ARG", OPTION_ARG_OPTIONAL, N_("Show demangled symbols (ARG is always ignored)"), 0 }, + { NULL, 'C', NULL, 0, N_("Show demangled symbols"), 0 }, { "pretty-print", OPT_PRETTY, NULL, 0, N_("Print all information on one line, and indent inlines"), 0 }, { "relative", OPT_RELATIVE, NULL, 0, @@ -225,7 +226,10 @@ parse_opt (int key, char *arg, struct argp_state *state) print_addresses = true; break; + /* Ignore --target=bfdname. */ case 'b': + break; + case 'C': case OPT_DEMANGLER: demangle = true; diff --git a/src/elfcompress.c b/src/elfcompress.c index 6f18e47d12125d2c49dc48ad5e78cd2e13ab6207..f771b92afabf9974e3e2cf26d4ea3bd2bd7a3789 100644 --- a/src/elfcompress.c +++ b/src/elfcompress.c @@ -48,13 +48,24 @@ static bool force = false; static bool permissive = false; static const char *foutput = NULL; -#define T_UNSET 0 -#define T_DECOMPRESS 1 /* none */ -#define T_COMPRESS_ZLIB 2 /* zlib */ -#define T_COMPRESS_GNU 3 /* zlib-gnu */ +/* Compression algorithm, where all legal values for ch_type + (compression algorithm) do match the following enum. */ +enum ch_type +{ + UNSET = -1, + NONE, + ZLIB, + ZSTD, + + /* Maximal supported ch_type. */ + MAXIMAL_CH_TYPE = ZSTD, + + ZLIB_GNU = 1 << 16 +}; + #define WORD_BITS (8U * sizeof (unsigned int)) -static int type = T_UNSET; +static enum ch_type type = UNSET; struct section_pattern { @@ -120,22 +131,28 @@ parse_opt (int key, char *arg __attribute__ ((unused)), break; case 't': - if (type != T_UNSET) + if (type != UNSET) argp_error (state, N_("-t option specified twice")); if (strcmp ("none", arg) == 0) - type = T_DECOMPRESS; + type = NONE; else if (strcmp ("zlib", arg) == 0 || strcmp ("zlib-gabi", arg) == 0) - type = T_COMPRESS_ZLIB; + type = ZLIB; else if (strcmp ("zlib-gnu", arg) == 0 || strcmp ("gnu", arg) == 0) - type = T_COMPRESS_GNU; + type = ZLIB_GNU; + else if (strcmp ("zstd", arg) == 0) +#ifdef USE_ZSTD_COMPRESS + type = ZSTD; +#else + argp_error (state, N_("ZSTD support is not enabled")); +#endif else argp_error (state, N_("unknown compression type '%s'"), arg); break; case ARGP_KEY_SUCCESS: - if (type == T_UNSET) - type = T_COMPRESS_ZLIB; + if (type == UNSET) + type = ZLIB; if (patterns == NULL) add_pattern (".?(z)debug*"); break; @@ -198,17 +215,23 @@ setshdrstrndx (Elf *elf, GElf_Ehdr *ehdr, size_t ndx) static int compress_section (Elf_Scn *scn, size_t orig_size, const char *name, const char *newname, size_t ndx, - bool gnu, bool compress, bool report_verbose) + enum ch_type schtype, enum ch_type dchtype, + bool report_verbose) { + /* We either compress or decompress. */ + assert (schtype == NONE || dchtype == NONE); + bool compress = dchtype != NONE; + int res; unsigned int flags = compress && force ? ELF_CHF_FORCE : 0; - if (gnu) + if (schtype == ZLIB_GNU || dchtype == ZLIB_GNU) res = elf_compress_gnu (scn, compress ? 1 : 0, flags); else - res = elf_compress (scn, compress ? ELFCOMPRESS_ZLIB : 0, flags); + res = elf_compress (scn, dchtype, flags); if (res < 0) - error (0, 0, "Couldn't decompress section [%zd] %s: %s", + error (0, 0, "Couldn't %s section [%zd] %s: %s", + compress ? "compress" : "decompress", ndx, name, elf_errmsg (-1)); else { @@ -266,6 +289,44 @@ get_sections (unsigned int *sections, size_t shnum) return s; } +/* Return compression type of a given section SHDR. */ + +static enum ch_type +get_section_chtype (Elf_Scn *scn, GElf_Shdr *shdr, const char *sname, + size_t ndx) +{ + enum ch_type chtype = UNSET; + if ((shdr->sh_flags & SHF_COMPRESSED) != 0) + { + GElf_Chdr chdr; + if (gelf_getchdr (scn, &chdr) != NULL) + { + chtype = (enum ch_type)chdr.ch_type; + if (chtype == NONE) + { + error (0, 0, "Compression type for section %zd" + " can't be zero ", ndx); + chtype = UNSET; + } + else if (chtype > MAXIMAL_CH_TYPE) + { + error (0, 0, "Compression type (%d) for section %zd" + " is unsupported ", chtype, ndx); + chtype = UNSET; + } + } + else + error (0, 0, "Couldn't get chdr for section %zd", ndx); + } + /* Set ZLIB_GNU compression manually for .zdebug* sections. */ + else if (startswith (sname, ".zdebug")) + chtype = ZLIB_GNU; + else + chtype = NONE; + + return chtype; +} + static int process_file (const char *fname) { @@ -446,49 +507,55 @@ process_file (const char *fname) if (section_name_matches (sname)) { - if (!force && type == T_DECOMPRESS - && (shdr->sh_flags & SHF_COMPRESSED) == 0 - && !startswith (sname, ".zdebug")) - { - if (verbose > 0) - printf ("[%zd] %s already decompressed\n", ndx, sname); - } - else if (!force && type == T_COMPRESS_ZLIB - && (shdr->sh_flags & SHF_COMPRESSED) != 0) - { - if (verbose > 0) - printf ("[%zd] %s already compressed\n", ndx, sname); - } - else if (!force && type == T_COMPRESS_GNU - && startswith (sname, ".zdebug")) + enum ch_type schtype = get_section_chtype (scn, shdr, sname, ndx); + if (!force && verbose > 0) { - if (verbose > 0) - printf ("[%zd] %s already GNU compressed\n", ndx, sname); + /* The current compression matches the final one. */ + if (type == schtype) + switch (type) + { + case NONE: + printf ("[%zd] %s already decompressed\n", ndx, sname); + break; + case ZLIB: + case ZSTD: + printf ("[%zd] %s already compressed\n", ndx, sname); + break; + case ZLIB_GNU: + printf ("[%zd] %s already GNU compressed\n", ndx, sname); + break; + default: + abort (); + } } - else if (shdr->sh_type != SHT_NOBITS - && (shdr->sh_flags & SHF_ALLOC) == 0) + + if (force || type != schtype) { - set_section (sections, ndx); - /* Check if we might want to change this section name. */ - if (! adjust_names - && ((type != T_COMPRESS_GNU - && startswith (sname, ".zdebug")) - || (type == T_COMPRESS_GNU - && startswith (sname, ".debug")))) - adjust_names = true; - - /* We need a buffer this large if we change the names. */ - if (adjust_names) + if (shdr->sh_type != SHT_NOBITS + && (shdr->sh_flags & SHF_ALLOC) == 0) { - size_t slen = strlen (sname); - if (slen > maxnamelen) - maxnamelen = slen; + set_section (sections, ndx); + /* Check if we might want to change this section name. */ + if (! adjust_names + && ((type != ZLIB_GNU + && startswith (sname, ".zdebug")) + || (type == ZLIB_GNU + && startswith (sname, ".debug")))) + adjust_names = true; + + /* We need a buffer this large if we change the names. */ + if (adjust_names) + { + size_t slen = strlen (sname); + if (slen > maxnamelen) + maxnamelen = slen; + } } + else + if (verbose >= 0) + printf ("[%zd] %s ignoring %s section\n", ndx, sname, + (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); } - else - if (verbose >= 0) - printf ("[%zd] %s ignoring %s section\n", ndx, sname, - (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); } if (shdr->sh_type == SHT_SYMTAB) @@ -634,11 +701,11 @@ process_file (const char *fname) and keep track of whether or not to compress them (later in the fixup pass). Also record the original size, so we can report the difference later when we do compress. */ - int shstrtab_compressed = T_UNSET; + enum ch_type shstrtab_compressed = UNSET; size_t shstrtab_size = 0; char *shstrtab_name = NULL; char *shstrtab_newname = NULL; - int symtab_compressed = T_UNSET; + enum ch_type symtab_compressed = UNSET; size_t symtab_size = 0; char *symtab_name = NULL; char *symtab_newname = NULL; @@ -677,6 +744,13 @@ process_file (const char *fname) (de)compressed, invalidating the string pointers. */ sname = xstrdup (sname); + + /* Detect source compression that is how is the section compressed + now. */ + enum ch_type schtype = get_section_chtype (scn, shdr, sname, ndx); + if (schtype == UNSET) + goto cleanup; + /* We might want to decompress (and rename), but not compress during this pass since we might need the section data in later passes. Skip those sections for now and @@ -687,35 +761,32 @@ process_file (const char *fname) switch (type) { - case T_DECOMPRESS: - if ((shdr->sh_flags & SHF_COMPRESSED) != 0) + case NONE: + if (schtype != NONE) { + if (schtype == ZLIB_GNU) + { + snamebuf[0] = '.'; + strcpy (&snamebuf[1], &sname[2]); + newname = snamebuf; + } if (compress_section (scn, size, sname, NULL, ndx, - false, false, verbose > 0) < 0) - goto cleanup; - } - else if (startswith (sname, ".zdebug")) - { - snamebuf[0] = '.'; - strcpy (&snamebuf[1], &sname[2]); - newname = snamebuf; - if (compress_section (scn, size, sname, newname, ndx, - true, false, verbose > 0) < 0) + schtype, NONE, verbose > 0) < 0) goto cleanup; } else if (verbose > 0) printf ("[%zd] %s already decompressed\n", ndx, sname); break; - case T_COMPRESS_GNU: + case ZLIB_GNU: if (startswith (sname, ".debug")) { - if ((shdr->sh_flags & SHF_COMPRESSED) != 0) + if (schtype == ZLIB || schtype == ZSTD) { /* First decompress to recompress GNU style. Don't report even when verbose. */ if (compress_section (scn, size, sname, NULL, ndx, - false, false, false) < 0) + schtype, NONE, false) < 0) goto cleanup; } @@ -729,7 +800,7 @@ process_file (const char *fname) if (ndx == shdrstrndx) { shstrtab_size = size; - shstrtab_compressed = T_COMPRESS_GNU; + shstrtab_compressed = ZLIB_GNU; if (shstrtab_name != NULL || shstrtab_newname != NULL) { @@ -745,7 +816,7 @@ process_file (const char *fname) else { symtab_size = size; - symtab_compressed = T_COMPRESS_GNU; + symtab_compressed = ZLIB_GNU; symtab_name = xstrdup (sname); symtab_newname = xstrdup (newname); } @@ -753,7 +824,7 @@ process_file (const char *fname) else { int result = compress_section (scn, size, sname, newname, - ndx, true, true, + ndx, NONE, type, verbose > 0); if (result < 0) goto cleanup; @@ -764,8 +835,8 @@ process_file (const char *fname) } else if (verbose >= 0) { - if (startswith (sname, ".zdebug")) - printf ("[%zd] %s unchanged, already GNU compressed", + if (schtype == ZLIB_GNU) + printf ("[%zd] %s unchanged, already GNU compressed\n", ndx, sname); else printf ("[%zd] %s cannot GNU compress section not starting with .debug\n", @@ -773,20 +844,23 @@ process_file (const char *fname) } break; - case T_COMPRESS_ZLIB: - if ((shdr->sh_flags & SHF_COMPRESSED) == 0) + case ZLIB: + case ZSTD: + if (schtype != type) { - if (startswith (sname, ".zdebug")) + if (schtype != NONE) { - /* First decompress to recompress zlib style. - Don't report even when verbose. */ + /* Decompress first. */ if (compress_section (scn, size, sname, NULL, ndx, - true, false, false) < 0) + schtype, NONE, false) < 0) goto cleanup; - snamebuf[0] = '.'; - strcpy (&snamebuf[1], &sname[2]); - newname = snamebuf; + if (schtype == ZLIB_GNU) + { + snamebuf[0] = '.'; + strcpy (&snamebuf[1], &sname[2]); + newname = snamebuf; + } } if (skip_compress_section) @@ -794,7 +868,7 @@ process_file (const char *fname) if (ndx == shdrstrndx) { shstrtab_size = size; - shstrtab_compressed = T_COMPRESS_ZLIB; + shstrtab_compressed = type; if (shstrtab_name != NULL || shstrtab_newname != NULL) { @@ -811,19 +885,22 @@ process_file (const char *fname) else { symtab_size = size; - symtab_compressed = T_COMPRESS_ZLIB; + symtab_compressed = type; symtab_name = xstrdup (sname); symtab_newname = (newname == NULL ? NULL : xstrdup (newname)); } } else if (compress_section (scn, size, sname, newname, ndx, - false, true, verbose > 0) < 0) + NONE, type, verbose > 0) < 0) goto cleanup; } else if (verbose > 0) printf ("[%zd] %s already compressed\n", ndx, sname); break; + + case UNSET: + break; } free (sname); @@ -903,28 +980,28 @@ process_file (const char *fname) /* If the section is (still) compressed we'll need to uncompress it first to adjust the data, then recompress it in the fixup pass. */ - if (symtab_compressed == T_UNSET) + if (symtab_compressed == UNSET) { size_t size = shdr->sh_size; if ((shdr->sh_flags == SHF_COMPRESSED) != 0) { /* Don't report the (internal) uncompression. */ if (compress_section (newscn, size, sname, NULL, ndx, - false, false, false) < 0) + ZLIB, NONE, false) < 0) goto cleanup; symtab_size = size; - symtab_compressed = T_COMPRESS_ZLIB; + symtab_compressed = ZLIB; } else if (startswith (name, ".zdebug")) { /* Don't report the (internal) uncompression. */ if (compress_section (newscn, size, sname, NULL, ndx, - true, false, false) < 0) + ZLIB_GNU, NONE, false) < 0) goto cleanup; symtab_size = size; - symtab_compressed = T_COMPRESS_GNU; + symtab_compressed = ZLIB_GNU; } } @@ -1037,7 +1114,7 @@ process_file (const char *fname) or if the section was already compressed (and the user didn't ask for decompression). Note somewhat identical code for symtab below. */ - if (shstrtab_compressed == T_UNSET) + if (shstrtab_compressed == UNSET) { /* The user didn't ask for compression, but maybe it was compressed in the original ELF file. */ @@ -1067,18 +1144,18 @@ process_file (const char *fname) shstrtab_size = shdr->sh_size; if ((shdr->sh_flags & SHF_COMPRESSED) != 0) - shstrtab_compressed = T_COMPRESS_ZLIB; + shstrtab_compressed = ZLIB; else if (startswith (shstrtab_name, ".zdebug")) - shstrtab_compressed = T_COMPRESS_GNU; + shstrtab_compressed = ZLIB_GNU; } /* Should we (re)compress? */ - if (shstrtab_compressed != T_UNSET) + if (shstrtab_compressed != UNSET) { if (compress_section (scn, shstrtab_size, shstrtab_name, shstrtab_newname, shdrstrndx, - shstrtab_compressed == T_COMPRESS_GNU, - true, verbose > 0) < 0) + NONE, shstrtab_compressed, + verbose > 0) < 0) goto cleanup; } } @@ -1178,7 +1255,7 @@ process_file (const char *fname) us to, or if the section was already compressed (and the user didn't ask for decompression). Note somewhat identical code for shstrtab above. */ - if (symtab_compressed == T_UNSET) + if (symtab_compressed == UNSET) { /* The user didn't ask for compression, but maybe it was compressed in the original ELF file. */ @@ -1208,18 +1285,18 @@ process_file (const char *fname) symtab_size = shdr->sh_size; if ((shdr->sh_flags & SHF_COMPRESSED) != 0) - symtab_compressed = T_COMPRESS_ZLIB; + symtab_compressed = ZLIB; else if (startswith (symtab_name, ".zdebug")) - symtab_compressed = T_COMPRESS_GNU; + symtab_compressed = ZLIB_GNU; } /* Should we (re)compress? */ - if (symtab_compressed != T_UNSET) + if (symtab_compressed != UNSET) { if (compress_section (scn, symtab_size, symtab_name, symtab_newname, symtabndx, - symtab_compressed == T_COMPRESS_GNU, - true, verbose > 0) < 0) + NONE, symtab_compressed, + verbose > 0) < 0) goto cleanup; } } @@ -1331,7 +1408,8 @@ main (int argc, char **argv) N_("Place (de)compressed output into FILE"), 0 }, { "type", 't', "TYPE", 0, - N_("What type of compression to apply. TYPE can be 'none' (decompress), 'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias) or 'zlib-gnu' (.zdebug GNU style compression, 'gnu' is an alias)"), + N_("What type of compression to apply. TYPE can be 'none' (decompress), 'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), " + "'zlib-gnu' (.zdebug GNU style compression, 'gnu' is an alias) or 'zstd' (ELF ZSTD compression)"), 0 }, { "name", 'n', "SECTION", 0, N_("SECTION name to (de)compress, SECTION is an extended wildcard pattern (defaults to '.?(z)debug*')"), diff --git a/src/elflint.c b/src/elflint.c index 565cffdc6579ece072f2a708b721666e4ab3f449..864de710a29cd5c7cd65cd8b97b862f7ce305f56 100644 --- a/src/elflint.c +++ b/src/elflint.c @@ -1,5 +1,6 @@ /* Pedantic checking of ELF files compliance with gABI/psABI spec. Copyright (C) 2001-2015, 2017, 2018 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. Written by Ulrich Drepper , 2001. @@ -329,7 +330,8 @@ static const int valid_e_machine[] = EM_CRIS, EM_JAVELIN, EM_FIREPATH, EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM, EM_AVR, EM_FR30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300, EM_MN10200, EM_PJ, EM_OPENRISC, EM_ARC_A5, EM_XTENSA, EM_ALPHA, - EM_TILEGX, EM_TILEPRO, EM_AARCH64, EM_BPF, EM_RISCV, EM_CSKY + EM_TILEGX, EM_TILEPRO, EM_AARCH64, EM_BPF, EM_RISCV, EM_CSKY, EM_LOONGARCH, + EM_ARCV2 }; #define nvalid_e_machine \ (sizeof (valid_e_machine) / sizeof (valid_e_machine[0])) @@ -1290,10 +1292,20 @@ 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 (_(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)); + { + if (reltype == ELF_T_RELA) + ERROR ("\ +section [%2d] '%s': section entry size does not match ElfXX_Rela\n", + idx, section_name (ebl, idx)); + else if (reltype == ELF_T_REL) + ERROR ("\ +section [%2d] '%s': section entry size does not match ElfXX_Rel\n", + idx, section_name (ebl, idx)); + else + ERROR ("\ +section [%2d] '%s': section entry size does not match ElfXX_Relr\n", + idx, section_name (ebl, idx)); + } /* In preparation of checking whether relocations are text relocations or not we need to determine whether the file is @@ -1589,6 +1601,32 @@ section [%2d] '%s': cannot get relocation %zu: %s\n"), } } +static void +check_relr (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 (_("section [%2d] '%s': cannot get section data\n"), + idx, section_name (ebl, idx)); + return; + } + + /* Check the fields of the section header. */ + GElf_Shdr destshdr_mem; + GElf_Shdr *destshdr = NULL; + struct loaded_segment *loaded = NULL; + check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELR, &destshdr, + &destshdr_mem, &loaded); + + /* Just throw them away. */ + while (loaded != NULL) + { + struct loaded_segment *old = loaded; + loaded = loaded->next; + free (old); + } +} /* Number of dynamic sections. */ static int ndynamic; @@ -1779,6 +1817,7 @@ section [%2d] '%s': entry %zu: pointer does not match address of section [%2d] ' case DT_PLTGOT: case DT_REL: case DT_RELA: + case DT_RELR: case DT_SYMBOLIC: case DT_SYMTAB: case DT_VERDEF: @@ -3568,9 +3607,12 @@ section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"), const unsigned char *r = chunk; if (tag == 32 || (tag & 1) == 0) { + if (r >= q) + goto invalid_uleb; get_uleb128 (value, r, q); if (r > q) { + invalid_uleb: ERROR (_("\ section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"), idx, section_name (ebl, idx), buffer_pos (data, chunk)); @@ -3656,6 +3698,7 @@ static const struct { ".plt", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more tests { ".preinit_array", 15, SHT_PREINIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 }, { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests + { ".relr", 5, SHT_RELR, atleast, 0, SHF_ALLOC }, // XXX more tests { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests { ".rodata", 8, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS }, { ".rodata1", 9, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS }, @@ -4178,6 +4221,10 @@ section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"), check_rel (ebl, ehdr, shdr, cnt); break; + case SHT_RELR: + check_relr (ebl, ehdr, shdr, cnt); + break; + case SHT_DYNAMIC: check_dynamic (ebl, ehdr, shdr, cnt); break; diff --git a/src/nm.c b/src/nm.c index b46c1fd7d3ff1c1b670a774646fa80570ea827b2..fbdee8e100b569e4d8a44e2e2112af8cb4b39b72 100644 --- a/src/nm.c +++ b/src/nm.c @@ -829,7 +829,7 @@ show_symbols_sysv (Ebl *ebl, GElf_Word strndx, const char *fullname, putchar_unlocked (':'); } - /* Covert the address. */ + /* Convert the address. */ if (syms[cnt].sym.st_shndx == SHN_UNDEF) { sprintf (addressbuf, "%*c", digits, ' '); diff --git a/src/readelf.c b/src/readelf.c index 77fcd6d682d3c27298b261f187c5294d638b3a70..decfaf1553eefbcad45da20b52456b72478342fb 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -1,5 +1,6 @@ /* Print information from ELF file in human-readable form. Copyright (C) 1999-2018 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -301,13 +302,29 @@ static void print_shdr (Ebl *ebl, GElf_Ehdr *ehdr); static void print_phdr (Ebl *ebl, GElf_Ehdr *ehdr); static void print_scngrp (Ebl *ebl); static void print_dynamic (Ebl *ebl); -static void print_relocs (Ebl *ebl, GElf_Ehdr *ehdr); +static void print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr); static void handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr); static void handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr); -static void print_symtab (Ebl *ebl, int type); -static void handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr); +static void handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, + GElf_Shdr *shdr); +static bool print_symtab (Ebl *ebl, int type); +static bool handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr); +static bool handle_dynamic_symtab (Ebl *ebl); +static void +process_symtab( + Ebl * ebl, + unsigned int nsyms, + Elf64_Word idx, + Elf32_Word verneed_stridx, + Elf32_Word verdef_stridx, + Elf_Data * symdata, + Elf_Data * versym_data, + Elf_Data * symstr_data, + Elf_Data * verneed_data, + Elf_Data * verdef_data, + Elf_Data * xndx_data); static void print_verinfo (Ebl *ebl); static void handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr); static void handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr); @@ -322,12 +339,17 @@ static void dump_data (Ebl *ebl); static void dump_strings (Ebl *ebl); static void print_strings (Ebl *ebl); static void dump_archive_index (Elf *, const char *); +static void print_dwarf_addr (Dwfl_Module *dwflmod, int address_size, + Dwarf_Addr address, Dwarf_Addr raw); enum dyn_idx { + i_symtab_shndx, i_strsz, i_verneed, + i_verneednum, i_verdef, + i_verdefnum, i_versym, i_symtab, i_strtab, @@ -1022,6 +1044,8 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) goto ebl_error; } + bool symtab_printed = false; + if (print_file_header) print_ehdr (ebl, ehdr); if (print_section_header) @@ -1033,15 +1057,21 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) if (print_dynamic_table) print_dynamic (ebl); if (print_relocations) - print_relocs (pure_ebl, ehdr); + print_relocs (pure_ebl, dwflmod, ehdr); if (print_histogram) handle_hash (ebl); if (print_symbol_table || print_dynsym_table) - print_symtab (ebl, SHT_DYNSYM); + symtab_printed |= print_symtab (ebl, SHT_DYNSYM); if (print_version_info) print_verinfo (ebl); - if (print_symbol_table) - print_symtab (ebl, SHT_SYMTAB); + if (print_symbol_table && !use_dynamic_segment) + symtab_printed |= print_symtab (ebl, SHT_SYMTAB); + + if ((print_symbol_table || print_dynsym_table) + && !symtab_printed && symbol_table_section != NULL) + printf ("WARNING: %s: '%s'\n", _("cannot find section"), + symbol_table_section); + if (print_arch) print_liblist (ebl); if (print_arch) @@ -1057,13 +1087,14 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) if (print_string_sections) print_strings (ebl); - ebl_closebackend (ebl); - if (pure_ebl != ebl) { + ebl_closebackend (ebl); ebl_closebackend (pure_ebl); elf_end (pure_elf); } + else + ebl_closebackend (ebl); } @@ -1230,13 +1261,17 @@ get_visibility_type (int value) static const char * elf_ch_type_name (unsigned int code) { - if (code == 0) - return "NONE"; - - if (code == ELFCOMPRESS_ZLIB) - return "ZLIB"; - - return "UNKNOWN"; + switch (code) + { + case 0: + return "NONE"; + case ELFCOMPRESS_ZLIB: + return "ZLIB"; + case ELFCOMPRESS_ZSTD: + return "ZSTD"; + default: + return "UNKNOWN"; + } } /* Print the section headers. */ @@ -1593,7 +1628,7 @@ static const char * section_name (Ebl *ebl, GElf_Shdr *shdr) { size_t shstrndx; - if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0) + if (shdr == NULL || elf_getshdrstrndx (ebl->elf, &shstrndx) < 0) return "???"; return elf_strptr (ebl->elf, shstrndx, shdr->sh_name) ?: "???"; } @@ -1828,7 +1863,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) size_t dyn_ents; /* Get the data of the section. */ - if (use_dynamic_segment) + if (use_dynamic_segment && phdr != NULL) data = elf_getdata_rawchunk(ebl->elf, phdr->p_offset, phdr->p_filesz, ELF_T_DYN); else @@ -1840,7 +1875,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) /* Get the dynamic section entry number */ dyn_ents = get_dyn_ents (data); - if (!use_dynamic_segment) + if (!use_dynamic_segment && shdr != NULL) { /* Get the section header string table index. */ if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) @@ -1862,7 +1897,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) (int) shdr->sh_link, elf_strptr (ebl->elf, shstrndx, glink->sh_name)); } - else + else if (phdr != NULL) { printf (ngettext ("\ \nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 "\n", @@ -1879,7 +1914,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) /* if --use-dynamic option is enabled, use the string table to get the related library info. */ Elf_Data *strtab_data = NULL; - if (use_dynamic_segment) + if (use_dynamic_segment && phdr != NULL) { strtab_data = get_dynscn_strtab(ebl->elf, phdr); if (strtab_data == NULL) @@ -1903,7 +1938,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) || dyn->d_tag == DT_RPATH || dyn->d_tag == DT_RUNPATH) { - if (! use_dynamic_segment) + if (! use_dynamic_segment && shdr != NULL) name = elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val); else if (dyn->d_un.d_val < strtab_data->d_size && memrchr (strtab_data->d_buf + dyn->d_un.d_val, '\0', @@ -1941,9 +1976,11 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) case DT_RELASZ: case DT_STRSZ: case DT_RELSZ: + case DT_RELRSZ: case DT_RELAENT: case DT_SYMENT: case DT_RELENT: + case DT_RELRENT: case DT_PLTPADSZ: case DT_MOVEENT: case DT_MOVESZ: @@ -2019,7 +2056,7 @@ print_dynamic (Ebl *ebl) /* Print relocations. */ static void -print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) +print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr) { /* Find all relocation sections and handle them. */ Elf_Scn *scn = NULL; @@ -2036,6 +2073,8 @@ print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) handle_relocs_rel (ebl, ehdr, scn, shdr); else if (shdr->sh_type == SHT_RELA) handle_relocs_rela (ebl, ehdr, scn, shdr); + else if (shdr->sh_type == SHT_RELR) + handle_relocs_relr (ebl, mod, scn, shdr); } } } @@ -2424,14 +2463,128 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) } } - -/* Print the program header. */ +/* Handle a relocation section. */ static void +handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, GElf_Shdr *shdr) +{ + int class = gelf_getclass (ebl->elf); + size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELR, 1, EV_CURRENT); + int nentries = shdr->sh_size / sh_entsize; + + /* Get the data of the section. */ + Elf_Data *data = elf_getdata (scn, NULL); + if (data == NULL) + return; + + /* Get the section header string table index. */ + size_t shstrndx; + if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) + error_exit (0, _("cannot get section header string table index")); + + /* A .relr.dyn section does not refer to a specific section. */ + printf (ngettext ("\ +\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n", + "\ +\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n", + nentries), + (unsigned int) elf_ndxscn (scn), + elf_strptr (ebl->elf, shstrndx, shdr->sh_name), + shdr->sh_offset, + nentries); + + if (class == ELFCLASS32) + { + uint32_t base = 0; + for (int cnt = 0; cnt < nentries; ++cnt) + { + Elf32_Word *words = data->d_buf; + Elf32_Word entry = words[cnt]; + + /* Just the raw entries? */ + if (print_unresolved_addresses) + printf (" %#010" PRIx32 "%s\n", entry, + (entry & 1) == 0 ? " *" : ""); + else + { + /* A real address, also sets base. */ + if ((entry & 1) == 0) + { + printf (" "); + print_dwarf_addr (mod, 4, entry, entry); + printf (" *\n"); + + base = entry + 4; + } + else + { + /* Untangle address from base and bits. */ + uint32_t addr; + for (addr = base; (entry >>= 1) != 0; addr += 4) + if ((entry & 1) != 0) + { + printf (" "); + print_dwarf_addr (mod, 4, addr, addr); + printf ("\n"); + } + base += 4 * (4 * 8 - 1); + } + } + } + } + else + { + uint64_t base = 0; + for (int cnt = 0; cnt < nentries; ++cnt) + { + Elf64_Xword *xwords = data->d_buf; + Elf64_Xword entry = xwords[cnt]; + + /* Just the raw entries? */ + if (print_unresolved_addresses) + printf (" %#018" PRIx64 "%s\n", entry, + (entry & 1) == 0 ? " *" : ""); + else + { + /* A real address, also sets base. */ + if ((entry & 1) == 0) + { + printf (" "); + print_dwarf_addr (mod, 8, entry, entry); + printf (" *\n"); + + base = entry + 8; + } + else + { + /* Untangle address from base and bits. */ + uint64_t addr; + for (addr = base; (entry >>= 1) != 0; addr += 8) + if ((entry & 1) != 0) + { + printf (" "); + print_dwarf_addr (mod, 8, addr, addr); + printf ("\n"); + } + base += 8 * (8 * 8 - 1); + } + } + } + } +} + +/* Print the program header. Return true if a symtab is printed, + false otherwise. */ +static bool print_symtab (Ebl *ebl, int type) { + /* Use the dynamic section info to display symbol tables. */ + if (use_dynamic_segment && type == SHT_DYNSYM) + return handle_dynamic_symtab(ebl); + /* Find the symbol table(s). For this we have to search through the section table. */ Elf_Scn *scn = NULL; + bool symtab_printed = false; while ((scn = elf_nextscn (ebl->elf, scn)) != NULL) { @@ -2466,13 +2619,188 @@ print_symtab (Ebl *ebl, int type) _("cannot get section [%zd] header: %s"), elf_ndxscn (scn), elf_errmsg (-1)); } - handle_symtab (ebl, scn, shdr); + symtab_printed = handle_symtab (ebl, scn, shdr); } } + + return symtab_printed; } static void +process_symtab (Ebl *ebl, unsigned int nsyms, Elf64_Word idx, + Elf32_Word verneed_stridx, Elf32_Word verdef_stridx, + Elf_Data *symdata, Elf_Data *versym_data, + Elf_Data *symstr_data, Elf_Data *verneed_data, + Elf_Data *verdef_data, Elf_Data *xndx_data) +{ + for (unsigned int cnt = 0; cnt < nsyms; ++cnt) + { + char typebuf[64]; + char bindbuf[64]; + char scnbuf[64]; + Elf32_Word xndx; + GElf_Sym sym_mem; + GElf_Sym *sym + = gelf_getsymshndx (symdata, xndx_data, cnt, &sym_mem, &xndx); + + if (unlikely (sym == NULL)) + continue; + + /* Determine the real section index. */ + if (likely (sym->st_shndx != SHN_XINDEX)) + xndx = sym->st_shndx; + + printf (_ ("\ +%5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"), + cnt, gelf_getclass (ebl->elf) == ELFCLASS32 ? 8 : 16, + sym->st_value, sym->st_size, + ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), typebuf, + sizeof (typebuf)), + ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info), + bindbuf, sizeof (bindbuf)), + get_visibility_type (GELF_ST_VISIBILITY (sym->st_other)), + ebl_section_name (ebl, sym->st_shndx, xndx, scnbuf, + sizeof (scnbuf), NULL, shnum), + use_dynamic_segment == true + ? (char *)symstr_data->d_buf + sym->st_name + : elf_strptr (ebl->elf, idx, sym->st_name)); + + if (versym_data != NULL) + { + /* Get the version information. */ + GElf_Versym versym_mem; + GElf_Versym *versym = gelf_getversym (versym_data, cnt, &versym_mem); + + if (versym != NULL && ((*versym & 0x8000) != 0 || *versym > 1)) + { + bool is_nobits = false; + bool check_def = xndx != SHN_UNDEF; + + if (xndx < SHN_LORESERVE || sym->st_shndx == SHN_XINDEX) + { + GElf_Shdr symshdr_mem; + GElf_Shdr *symshdr = gelf_getshdr ( + elf_getscn (ebl->elf, xndx), &symshdr_mem); + + is_nobits + = (symshdr != NULL && symshdr->sh_type == SHT_NOBITS); + } + + if (is_nobits || !check_def) + { + /* We must test both. */ + GElf_Vernaux vernaux_mem; + GElf_Vernaux *vernaux = NULL; + size_t vn_offset = 0; + + GElf_Verneed verneed_mem; + GElf_Verneed *verneed + = gelf_getverneed (verneed_data, 0, &verneed_mem); + while (verneed != NULL) + { + size_t vna_offset = vn_offset; + + vernaux = gelf_getvernaux (verneed_data, + vna_offset += verneed->vn_aux, + &vernaux_mem); + while (vernaux != NULL && vernaux->vna_other != *versym + && vernaux->vna_next != 0 + && (verneed_data->d_size - vna_offset + >= vernaux->vna_next)) + { + /* Update the offset. */ + vna_offset += vernaux->vna_next; + + vernaux = (vernaux->vna_next == 0 + ? NULL + : gelf_getvernaux (verneed_data, + vna_offset, + &vernaux_mem)); + } + + /* Check whether we found the version. */ + if (vernaux != NULL && vernaux->vna_other == *versym) + /* Found it. */ + break; + + if (verneed_data->d_size - vn_offset < verneed->vn_next) + break; + + vn_offset += verneed->vn_next; + verneed + = (verneed->vn_next == 0 + ? NULL + : gelf_getverneed (verneed_data, vn_offset, + &verneed_mem)); + } + + if (vernaux != NULL && vernaux->vna_other == *versym) + { + printf ("@%s (%u)", + use_dynamic_segment == true + ? (char *)symstr_data->d_buf + + vernaux->vna_name + : elf_strptr (ebl->elf, verneed_stridx, + vernaux->vna_name), + (unsigned int)vernaux->vna_other); + check_def = 0; + } + else if (unlikely (!is_nobits)) + error (0, 0, _ ("bad dynamic symbol")); + else + check_def = 1; + } + + if (check_def && *versym != 0x8001) + { + /* We must test both. */ + size_t vd_offset = 0; + + GElf_Verdef verdef_mem; + GElf_Verdef *verdef + = gelf_getverdef (verdef_data, 0, &verdef_mem); + while (verdef != NULL) + { + if (verdef->vd_ndx == (*versym & 0x7fff)) + /* Found the definition. */ + break; + + if (verdef_data->d_size - vd_offset < verdef->vd_next) + break; + + vd_offset += verdef->vd_next; + verdef = (verdef->vd_next == 0 + ? NULL + : gelf_getverdef (verdef_data, vd_offset, + &verdef_mem)); + } + + if (verdef != NULL) + { + GElf_Verdaux verdaux_mem; + GElf_Verdaux *verdaux = gelf_getverdaux ( + verdef_data, vd_offset + verdef->vd_aux, + &verdaux_mem); + + if (verdaux != NULL) + printf ((*versym & 0x8000) ? "@%s" : "@@%s", + use_dynamic_segment == true + ? (char *)symstr_data->d_buf + + verdaux->vda_name + : elf_strptr (ebl->elf, verdef_stridx, + verdaux->vda_name)); + } + } + } + } + + putchar_unlocked ('\n'); + } +} + + +static bool handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) { Elf_Data *versym_data = NULL; @@ -2486,7 +2814,7 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) /* Get the data of the section. */ Elf_Data *data = elf_getdata (scn, NULL); if (data == NULL) - return; + return false; /* Find out whether we have other sections we might need. */ Elf_Scn *runscn = NULL; @@ -2556,163 +2884,184 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) Num: Value Size Type Bind Vis Ndx Name\n"), stdout); - for (unsigned int cnt = 0; cnt < nsyms; ++cnt) - { - char typebuf[64]; - char bindbuf[64]; - char scnbuf[64]; - Elf32_Word xndx; - GElf_Sym sym_mem; - GElf_Sym *sym = gelf_getsymshndx (data, xndx_data, cnt, &sym_mem, &xndx); - - if (unlikely (sym == NULL)) - continue; - - /* Determine the real section index. */ - if (likely (sym->st_shndx != SHN_XINDEX)) - xndx = sym->st_shndx; - - printf (_("\ -%5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"), - cnt, - class == ELFCLASS32 ? 8 : 16, - sym->st_value, - sym->st_size, - ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), - typebuf, sizeof (typebuf)), - ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info), - bindbuf, sizeof (bindbuf)), - get_visibility_type (GELF_ST_VISIBILITY (sym->st_other)), - ebl_section_name (ebl, sym->st_shndx, xndx, scnbuf, - sizeof (scnbuf), NULL, shnum), - elf_strptr (ebl->elf, shdr->sh_link, sym->st_name)); - - if (versym_data != NULL) - { - /* Get the version information. */ - GElf_Versym versym_mem; - GElf_Versym *versym = gelf_getversym (versym_data, cnt, &versym_mem); - - if (versym != NULL && ((*versym & 0x8000) != 0 || *versym > 1)) - { - bool is_nobits = false; - bool check_def = xndx != SHN_UNDEF; - - if (xndx < SHN_LORESERVE || sym->st_shndx == SHN_XINDEX) - { - GElf_Shdr symshdr_mem; - GElf_Shdr *symshdr = - gelf_getshdr (elf_getscn (ebl->elf, xndx), &symshdr_mem); + process_symtab(ebl, nsyms, shdr->sh_link, verneed_stridx, verdef_stridx, + data, versym_data, NULL, verneed_data, verdef_data, xndx_data); + return true; +} - is_nobits = (symshdr != NULL - && symshdr->sh_type == SHT_NOBITS); - } - if (is_nobits || ! check_def) - { - /* We must test both. */ - GElf_Vernaux vernaux_mem; - GElf_Vernaux *vernaux = NULL; - size_t vn_offset = 0; - - GElf_Verneed verneed_mem; - GElf_Verneed *verneed = gelf_getverneed (verneed_data, 0, - &verneed_mem); - while (verneed != NULL) - { - size_t vna_offset = vn_offset; - - vernaux = gelf_getvernaux (verneed_data, - vna_offset += verneed->vn_aux, - &vernaux_mem); - while (vernaux != NULL - && vernaux->vna_other != *versym - && vernaux->vna_next != 0 - && (verneed_data->d_size - vna_offset - >= vernaux->vna_next)) - { - /* Update the offset. */ - vna_offset += vernaux->vna_next; - - vernaux = (vernaux->vna_next == 0 - ? NULL - : gelf_getvernaux (verneed_data, - vna_offset, - &vernaux_mem)); - } - - /* Check whether we found the version. */ - if (vernaux != NULL && vernaux->vna_other == *versym) - /* Found it. */ - break; +static bool +handle_dynamic_symtab (Ebl *ebl) +{ + GElf_Phdr phdr_mem; + GElf_Phdr *phdr = NULL; + /* phnum is a static variable which was already fetched in function + process_elf_file. */ + for (size_t i = 0; i < phnum; ++i) + { + phdr = gelf_getphdr (ebl->elf, i, &phdr_mem); + if (phdr->p_type == PT_DYNAMIC) + break; + } + if (phdr == NULL) + return false; - if (verneed_data->d_size - vn_offset < verneed->vn_next) - break; + GElf_Addr addrs[i_max] = { + 0, + }; + GElf_Off offs[i_max] = { + 0, + }; + get_dynscn_addrs (ebl->elf, phdr, addrs); + find_offsets (ebl->elf, 0, i_max, addrs, offs); - vn_offset += verneed->vn_next; - verneed = (verneed->vn_next == 0 - ? NULL - : gelf_getverneed (verneed_data, vn_offset, - &verneed_mem)); - } + size_t syments = 0; - if (vernaux != NULL && vernaux->vna_other == *versym) - { - printf ("@%s (%u)", - elf_strptr (ebl->elf, verneed_stridx, - vernaux->vna_name), - (unsigned int) vernaux->vna_other); - check_def = 0; - } - else if (unlikely (! is_nobits)) - error (0, 0, _("bad dynamic symbol")); - else - check_def = 1; - } + GElf_Ehdr ehdr_mem; + GElf_Ehdr *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem); - if (check_def && *versym != 0x8001) - { - /* We must test both. */ - size_t vd_offset = 0; + if (offs[i_hash] != 0) + { + /* In the original format, .hash says the size of .dynsym. */ - GElf_Verdef verdef_mem; - GElf_Verdef *verdef = gelf_getverdef (verdef_data, 0, - &verdef_mem); - while (verdef != NULL) - { - if (verdef->vd_ndx == (*versym & 0x7fff)) - /* Found the definition. */ - break; + size_t entsz = SH_ENTSIZE_HASH (ehdr); + Elf_Data *data + = elf_getdata_rawchunk (ebl->elf, offs[i_hash] + entsz, entsz, + (entsz == 4 ? ELF_T_WORD : ELF_T_XWORD)); + if (data != NULL) + syments = (entsz == 4 ? *(const GElf_Word *)data->d_buf + : *(const GElf_Xword *)data->d_buf); + } + if (offs[i_gnu_hash] != 0 && syments == 0) + { + /* In the new format, we can derive it with some work. */ - if (verdef_data->d_size - vd_offset < verdef->vd_next) - break; + const struct + { + Elf32_Word nbuckets; + Elf32_Word symndx; + Elf32_Word maskwords; + Elf32_Word shift2; + } * header; + + Elf_Data *data = elf_getdata_rawchunk (ebl->elf, offs[i_gnu_hash], + sizeof *header, ELF_T_WORD); + if (data != NULL) + { + header = data->d_buf; + Elf32_Word nbuckets = header->nbuckets; + Elf32_Word symndx = header->symndx; + GElf_Off buckets_at + = (offs[i_gnu_hash] + sizeof *header + + (gelf_getclass (ebl->elf) * sizeof (Elf32_Word) + * header->maskwords)); + + // elf_getdata_rawchunk takes a size_t, make sure it + // doesn't overflow. +#if SIZE_MAX <= UINT32_MAX + if (nbuckets > SIZE_MAX / sizeof (Elf32_Word)) + data = NULL; + else +#endif + data = elf_getdata_rawchunk (ebl->elf, buckets_at, + nbuckets * sizeof (Elf32_Word), + ELF_T_WORD); + if (data != NULL && symndx < nbuckets) + { + const Elf32_Word *const buckets = data->d_buf; + Elf32_Word maxndx = symndx; + for (Elf32_Word bucket = 0; bucket < nbuckets; ++bucket) + if (buckets[bucket] > maxndx) + maxndx = buckets[bucket]; + + GElf_Off hasharr_at + = (buckets_at + nbuckets * sizeof (Elf32_Word)); + hasharr_at += (maxndx - symndx) * sizeof (Elf32_Word); + do + { + data = elf_getdata_rawchunk ( + ebl->elf, hasharr_at, sizeof (Elf32_Word), ELF_T_WORD); + if (data != NULL && (*(const Elf32_Word *)data->d_buf & 1u)) + { + syments = maxndx + 1; + break; + } + ++maxndx; + hasharr_at += sizeof (Elf32_Word); + } + while (data != NULL); + } + } + } + if (offs[i_strtab] > offs[i_symtab] && syments == 0) + syments = ((offs[i_strtab] - offs[i_symtab]) + / gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT)); - vd_offset += verdef->vd_next; - verdef = (verdef->vd_next == 0 - ? NULL - : gelf_getverdef (verdef_data, vd_offset, - &verdef_mem)); - } + if (syments <= 0 || offs[i_strtab] == 0 || offs[i_symtab] == 0) + { + error_exit (0, _ ("Dynamic symbol information is not available for " + "displaying symbols.")); + } - if (verdef != NULL) - { - GElf_Verdaux verdaux_mem; - GElf_Verdaux *verdaux - = gelf_getverdaux (verdef_data, - vd_offset + verdef->vd_aux, - &verdaux_mem); - - if (verdaux != NULL) - printf ((*versym & 0x8000) ? "@%s" : "@@%s", - elf_strptr (ebl->elf, verdef_stridx, - verdaux->vda_name)); - } - } - } - } + /* All the data chunk initializaion. */ + Elf_Data *symdata = NULL; + Elf_Data *symstrdata = NULL; + Elf_Data *versym_data = NULL; + Elf_Data *verdef_data = NULL; + Elf_Data *verneed_data = NULL; - putchar_unlocked ('\n'); - } + symdata = elf_getdata_rawchunk ( + ebl->elf, offs[i_symtab], + gelf_fsize (ebl->elf, ELF_T_SYM, syments, EV_CURRENT), ELF_T_SYM); + symstrdata = elf_getdata_rawchunk (ebl->elf, offs[i_strtab], addrs[i_strsz], + ELF_T_BYTE); + versym_data = elf_getdata_rawchunk ( + ebl->elf, offs[i_versym], syments * sizeof (Elf64_Half), ELF_T_HALF); + + /* Get the verneed_data without vernaux. */ + verneed_data = elf_getdata_rawchunk ( + ebl->elf, offs[i_verneed], addrs[i_verneednum] * sizeof (Elf64_Verneed), + ELF_T_VNEED); + size_t vernauxnum = 0; + size_t vn_next_offset = 0; + + for (size_t i = 0; i < addrs[i_verneednum]; i++) + { + GElf_Verneed *verneed + = (GElf_Verneed *)(verneed_data->d_buf + vn_next_offset); + vernauxnum += verneed->vn_cnt; + vn_next_offset += verneed->vn_next; + } + + /* Update the verneed_data to include the vernaux. */ + verneed_data = elf_getdata_rawchunk ( + ebl->elf, offs[i_verneed], + (addrs[i_verneednum] + vernauxnum) * sizeof (GElf_Verneed), ELF_T_VNEED); + + /* Get the verdef_data without verdaux. */ + verdef_data = elf_getdata_rawchunk ( + ebl->elf, offs[i_verdef], addrs[i_verdefnum] * sizeof (Elf64_Verdef), + ELF_T_VDEF); + size_t verdauxnum = 0; + size_t vd_next_offset = 0; + + for (size_t i = 0; i < addrs[i_verdefnum]; i++) + { + GElf_Verdef *verdef + = (GElf_Verdef *)(verdef_data->d_buf + vd_next_offset); + verdauxnum += verdef->vd_cnt; + vd_next_offset += verdef->vd_next; + } + + /* Update the verdef_data to include the verdaux. */ + verdef_data = elf_getdata_rawchunk ( + ebl->elf, offs[i_verdef], + (addrs[i_verdefnum] + verdauxnum) * sizeof (GElf_Verdef), ELF_T_VDEF); + + unsigned int nsyms = (unsigned int)syments; + process_symtab (ebl, nsyms, 0, 0, 0, symdata, versym_data, symstrdata, + verneed_data, verdef_data, NULL); + return true; } @@ -3248,7 +3597,6 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx, { error (0, 0, _("invalid sh_link value in section %zu"), elf_ndxscn (scn)); - free (counts); return; } @@ -3786,6 +4134,7 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr) if (tag == 32 || (tag & 1) == 0 || (! gnu_vendor && (tag > 5 && tag < 32))) { + // Note r >= q check above. get_uleb128 (value, r, q); if (r > q) break; @@ -3841,8 +4190,41 @@ print_attributes (Ebl *ebl, const GElf_Ehdr *ehdr) } } +/* Returns either the (relocated) data from the Dwarf, or tries to get + the "raw" (uncompressed) data from the Elf section. Produces a + warning if the data cannot be found (or decompressed). */ +static Elf_Data * +get_debug_elf_data (Dwarf *dbg, Ebl *ebl, int idx, Elf_Scn *scn) +{ + /* We prefer to get the section data from the Dwarf because that + might have been relocated already. Note this is subtly wrong if + there are multiple sections with the same .debug name. */ + if (dbg->sectiondata[idx] != NULL) + return dbg->sectiondata[idx]; -void + GElf_Shdr shdr_mem; + GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); + if (shdr != NULL && (shdr->sh_flags & SHF_COMPRESSED) != 0) + { + if (elf_compress (scn, 0, 0) < 0) + { + error (0, 0, "%s [%zd] '%s'\n", + _("Couldn't uncompress section"), + elf_ndxscn (scn), section_name (ebl, shdr)); + return NULL; + } + } + + Elf_Data *data = elf_getdata (scn, NULL); + if (data == NULL) + error (0, 0, "%s [%zd] '%s': %s\n", + _("Couldn't get data from section"), + elf_ndxscn (scn), section_name (ebl, shdr), elf_errmsg (-1)); + + return elf_getdata (scn, NULL); +} + +static void print_dwarf_addr (Dwfl_Module *dwflmod, int address_size, Dwarf_Addr address, Dwarf_Addr raw) { @@ -4911,7 +5293,7 @@ get_dynscn_addrs(Elf *elf, GElf_Phdr *phdr, GElf_Addr addrs[i_max]) GElf_Dyn dyn_mem; GElf_Dyn *dyn = gelf_getdyn(data, dyn_idx, &dyn_mem); /* DT_NULL Marks end of dynamic section. */ - if (dyn->d_tag == DT_NULL) + if (dyn == NULL || dyn->d_tag == DT_NULL) break; switch (dyn->d_tag) { @@ -4939,13 +5321,25 @@ get_dynscn_addrs(Elf *elf, GElf_Phdr *phdr, GElf_Addr addrs[i_max]) addrs[i_verdef] = dyn->d_un.d_ptr; break; + case DT_VERDEFNUM: + addrs[i_verdefnum] = dyn->d_un.d_val; + break; + case DT_VERNEED: addrs[i_verneed] = dyn->d_un.d_ptr; break; + case DT_VERNEEDNUM: + addrs[i_verneednum] = dyn->d_un.d_val; + break; + case DT_STRSZ: addrs[i_strsz] = dyn->d_un.d_val; break; + + case DT_SYMTAB_SHNDX: + addrs[i_symtab_shndx] = dyn->d_un.d_ptr; + break; } } } @@ -5255,8 +5649,11 @@ print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)), Ebl *ebl, GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { - const size_t sh_size = (dbg->sectiondata[IDX_debug_abbrev] ? - dbg->sectiondata[IDX_debug_abbrev]->d_size : 0); + Elf_Data *elf_data = get_debug_elf_data (dbg, ebl, IDX_debug_abbrev, scn); + if (elf_data == NULL) + return; + + const size_t sh_size = elf_data->d_size; printf (_("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n" " [ Code]\n"), @@ -5328,6 +5725,10 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)), Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_addr, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), @@ -5336,16 +5737,6 @@ print_debug_addr_section (Dwfl_Module *dwflmod __attribute__ ((unused)), if (shdr->sh_size == 0) return; - /* We like to get the section from libdw to make sure they are relocated. */ - Elf_Data *data = (dbg->sectiondata[IDX_debug_addr] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_addr section data: %s"), - elf_errmsg (-1)); - return; - } - size_t idx = 0; sort_listptr (&known_addrbases, "addr_base"); @@ -5627,15 +6018,9 @@ print_debug_aranges_section (Dwfl_Module *dwflmod __attribute__ ((unused)), return; } - Elf_Data *data = (dbg->sectiondata[IDX_debug_aranges] - ?: elf_rawdata (scn, NULL)); - - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_aranges content: %s"), - elf_errmsg (-1)); - return; - } + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_aranges, scn); + if (data == NULL) + return; printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), @@ -5804,20 +6189,15 @@ print_debug_rnglists_section (Dwfl_Module *dwflmod, Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg __attribute__((unused))) { + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_rnglists, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); - Elf_Data *data =(dbg->sectiondata[IDX_debug_rnglists] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_rnglists content: %s"), - elf_errmsg (-1)); - return; - } - /* For the listptr to get the base address/CU. */ sort_listptr (&known_rnglistptr, "rnglistptr"); size_t listptr_idx = 0; @@ -6180,14 +6560,9 @@ print_debug_ranges_section (Dwfl_Module *dwflmod, Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { - Elf_Data *data = (dbg->sectiondata[IDX_debug_ranges] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_ranges content: %s"), - elf_errmsg (-1)); - return; - } + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_ranges, scn); + if (data == NULL) + return; printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), @@ -6338,9 +6713,13 @@ read_encoded (unsigned int encoding, const unsigned char *readp, switch (encoding & 0xf) { case DW_EH_PE_uleb128: + if (readp >= endp) + goto invalid; get_uleb128 (*res, readp, endp); break; case DW_EH_PE_sleb128: + if (readp >= endp) + goto invalid; get_sleb128 (*res, readp, endp); break; case DW_EH_PE_udata2: @@ -6788,16 +7167,22 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, } bool is_eh_frame = strcmp (scnname, ".eh_frame") == 0; - Elf_Data *data = (is_eh_frame - ? elf_rawdata (scn, NULL) - : (dbg->sectiondata[IDX_debug_frame] - ?: elf_rawdata (scn, NULL))); - - if (unlikely (data == NULL)) + Elf_Data *data; + if (is_eh_frame) { - error (0, 0, _("cannot get %s content: %s"), - scnname, elf_errmsg (-1)); - return; + data = elf_rawdata (scn, NULL); + if (data == NULL) + { + error (0, 0, _("cannot get %s content: %s"), + scnname, elf_errmsg (-1)); + return; + } + } + else + { + data = get_debug_elf_data (dbg, ebl, IDX_debug_frame, scn); + if (data == NULL) + return; } if (is_eh_frame) @@ -6947,6 +7332,9 @@ print_debug_frame_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, if (augmentation[0] == 'z') { + if (cieend - readp < 1) + goto invalid_data; + unsigned int augmentationlen; get_uleb128 (augmentationlen, readp, cieend); @@ -7896,6 +8284,13 @@ print_debug_units (Dwfl_Module *dwflmod, const bool silent = !(print_debug_sections & section_info) && !debug_types; const char *secname = section_name (ebl, shdr); + /* Check section actually exists. */ + if (!silent) + if (get_debug_elf_data (dbg, ebl, + debug_types ? IDX_debug_types : IDX_debug_info, + scn) == NULL) + return; + if (!silent) printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n [Offset]\n"), @@ -8560,6 +8955,10 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, return; } + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_line, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), @@ -8570,14 +8969,6 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, /* There is no functionality in libdw to read the information in the way it is represented here. Hardcode the decoder. */ - Elf_Data *data = (dbg->sectiondata[IDX_debug_line] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get line data section data: %s"), - elf_errmsg (-1)); - return; - } const unsigned char *linep = (const unsigned char *) data->d_buf; const unsigned char *lineendp; @@ -9306,20 +9697,15 @@ print_debug_loclists_section (Dwfl_Module *dwflmod, Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_loclists, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); - Elf_Data *data = (dbg->sectiondata[IDX_debug_loclists] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_loclists content: %s"), - elf_errmsg (-1)); - return; - } - /* For the listptr to get the base address/CU. */ sort_listptr (&known_loclistsptr, "loclistsptr"); size_t listptr_idx = 0; @@ -9779,15 +10165,9 @@ print_debug_loc_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { - Elf_Data *data = (dbg->sectiondata[IDX_debug_loc] - ?: elf_rawdata (scn, NULL)); - - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_loc content: %s"), - elf_errmsg (-1)); - return; - } + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_loc, scn); + if (data == NULL) + return; printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), @@ -10040,6 +10420,10 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)), GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_macinfo, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), @@ -10048,14 +10432,6 @@ print_debug_macinfo_section (Dwfl_Module *dwflmod __attribute__ ((unused)), /* There is no function in libdw to iterate over the raw content of the section but it is easy enough to do. */ - Elf_Data *data = (dbg->sectiondata[IDX_debug_macinfo] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get macro information section data: %s"), - elf_errmsg (-1)); - return; - } /* Get the source file information for all CUs. */ Dwarf_Off offset; @@ -10206,20 +10582,16 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_macro, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); putc_unlocked ('\n', stdout); - Elf_Data *data = elf_getdata (scn, NULL); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get macro information section data: %s"), - elf_errmsg (-1)); - return; - } - /* Get the source file information for all CUs. Uses same datastructure as macinfo. But uses offset field to directly match .debug_line offset. And just stored in a list. */ @@ -10227,7 +10599,6 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), Dwarf_Off ncu = 0; size_t hsize; struct mac_culist *culist = NULL; - size_t nculist = 0; while (dwarf_nextcu (dbg, offset = ncu, &ncu, &hsize, NULL, NULL, NULL) == 0) { Dwarf_Die cudie; @@ -10248,7 +10619,6 @@ print_debug_macro_section (Dwfl_Module *dwflmod __attribute__ ((unused)), newp->files = NULL; newp->next = culist; culist = newp; - ++nculist; } const unsigned char *readp = (const unsigned char *) data->d_buf; @@ -10593,6 +10963,10 @@ print_debug_pubnames_section (Dwfl_Module *dwflmod __attribute__ ((unused)), GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { + /* Check section actually exists. */ + if (get_debug_elf_data (dbg, ebl, IDX_debug_pubnames, scn) == NULL) + return; + printf (_("\nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), (uint64_t) shdr->sh_offset); @@ -10601,7 +10975,8 @@ print_debug_pubnames_section (Dwfl_Module *dwflmod __attribute__ ((unused)), (void) dwarf_getpubnames (dbg, print_pubnames, &n, 0); } -/* Print the content of the DWARF string section '.debug_str'. */ +/* Print the content of the DWARF string section '.debug_str' + or 'debug_line_str'. */ static void print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)), Ebl *ebl, @@ -10609,8 +10984,14 @@ print_debug_str_section (Dwfl_Module *dwflmod __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg __attribute__ ((unused))) { - Elf_Data *data = elf_rawdata (scn, NULL); - const size_t sh_size = data ? data->d_size : 0; + const char *name = section_name (ebl, shdr); + int idx = ((name != NULL && strstr (name, "debug_line_str") != NULL) + ? IDX_debug_line_str : IDX_debug_str); + Elf_Data *data = get_debug_elf_data (dbg, ebl, idx, scn); + if (data == NULL) + return; + + const size_t sh_size = data->d_size; /* Compute floor(log16(shdr->sh_size)). */ GElf_Addr tmp = sh_size; @@ -10653,6 +11034,10 @@ print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)), GElf_Ehdr *ehdr __attribute__ ((unused)), Elf_Scn *scn, GElf_Shdr *shdr, Dwarf *dbg) { + Elf_Data *data = get_debug_elf_data (dbg, ebl, IDX_debug_str_offsets, scn); + if (data == NULL) + return; + printf (_("\ \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), elf_ndxscn (scn), section_name (ebl, shdr), @@ -10661,16 +11046,6 @@ print_debug_str_offsets_section (Dwfl_Module *dwflmod __attribute__ ((unused)), if (shdr->sh_size == 0) return; - /* We like to get the section from libdw to make sure they are relocated. */ - Elf_Data *data = (dbg->sectiondata[IDX_debug_str_offsets] - ?: elf_rawdata (scn, NULL)); - if (unlikely (data == NULL)) - { - error (0, 0, _("cannot get .debug_str_offsets section data: %s"), - elf_errmsg (-1)); - return; - } - size_t idx = 0; sort_listptr (&known_stroffbases, "str_offsets"); @@ -10987,6 +11362,8 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)), if (ttype_encoding != DW_EH_PE_omit) { unsigned int ttype_base_offset; + if (readp >= dataend) + goto invalid_data; get_uleb128 (ttype_base_offset, readp, dataend); printf (" TType base offset: %#x\n", ttype_base_offset); if ((size_t) (dataend - readp) > ttype_base_offset) @@ -10999,6 +11376,8 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)), printf (_(" Call site encoding: %#x "), call_site_encoding); print_encoding_base ("", call_site_encoding); unsigned int call_site_table_len; + if (readp >= dataend) + goto invalid_data; get_uleb128 (call_site_table_len, readp, dataend); const unsigned char *const action_table = readp + call_site_table_len; @@ -11021,6 +11400,8 @@ print_debug_exception_table (Dwfl_Module *dwflmod __attribute__ ((unused)), readp = read_encoded (call_site_encoding, readp, dataend, &landing_pad, dbg); unsigned int action; + if (readp >= dataend) + goto invalid_data; get_uleb128 (action, readp, dataend); max_action = MAX (action, max_action); printf (_(" [%4u] Call site start: %#" PRIx64 "\n" @@ -11158,8 +11539,9 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl, // hash used for generating the table. Version 6 contains symbols // for inlined functions, older versions didn't. Version 7 adds // symbol kinds. Version 8 just indicates that it correctly includes - // TUs for symbols. - if (vers < 4 || vers > 8) + // TUs for symbols. Version 9 adds shortcut table for information + // regarding the main function. + if (vers < 4 || vers > 9) { printf (_(" unknown version, cannot parse section\n")); return; @@ -11197,6 +11579,17 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl, if (unlikely (readp + 4 > dataend)) goto invalid_data; + uint32_t shortcut_off = 0; + if (vers >= 9) + { + shortcut_off = read_4ubyte_unaligned (dbg, readp); + printf (_(" shortcut offset: %#" PRIx32 "\n"), shortcut_off); + + readp += 4; + if (unlikely (readp + 4 > dataend)) + goto invalid_data; + } + uint32_t const_off = read_4ubyte_unaligned (dbg, readp); printf (_(" constant offset: %#" PRIx32 "\n"), const_off); @@ -11294,8 +11687,19 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl, if (const_off >= data->d_size) goto invalid_data; + const unsigned char *shortcut_start = NULL; + if (vers >= 9) + { + if (shortcut_off >= data->d_size) + goto invalid_data; + + shortcut_start = data->d_buf + shortcut_off; + nextp = shortcut_start; + } + else + nextp = const_start; + readp = data->d_buf + sym_off; - nextp = const_start; size_t sym_nr = (nextp - readp) / 8; printf (_("\n Symbol table at offset %#" PRIx32 @@ -11369,6 +11773,49 @@ print_gdb_index_section (Dwfl_Module *dwflmod, Ebl *ebl, } n++; } + + if (vers < 9) + return; + + if (unlikely (shortcut_start == NULL)) + goto invalid_data; + + readp = shortcut_start; + nextp = const_start; + size_t shortcut_nr = (nextp - readp) / 4; + + if (unlikely (shortcut_nr != 2)) + goto invalid_data; + + printf (_("\nShortcut table at offset %#" PRIx32 " contains %zu slots:\n"), + shortcut_off, shortcut_nr); + + uint32_t lang = read_4ubyte_unaligned (dbg, readp); + readp += 4; + + /* Include the hex number of LANG in the output if the language + is unknown. */ + const char *lang_str = dwarf_lang_string (lang); + lang_str = string_or_unknown (lang_str, lang, DW_LANG_lo_user, + DW_LANG_hi_user, true); + + printf (_("Language of main: %s\n"), lang_str); + printf (_("Name of main: ")); + + if (lang != 0) + { + uint32_t name = read_4ubyte_unaligned (dbg, readp); + readp += 4; + const unsigned char *sym = const_start + name; + + if (unlikely ((size_t) (dataend - const_start) < name + || memchr (sym, '\0', dataend - sym) == NULL)) + goto invalid_data; + + printf ("%s\n", sym); + } + else + printf ("\n"); } /* Returns true and sets split DWARF CU id if there is a split compile @@ -12176,24 +12623,17 @@ handle_core_items (Elf *core, const void *desc, size_t descsz, return colno; } -static unsigned int -handle_bit_registers (const Ebl_Register_Location *regloc, const void *desc, - unsigned int colno) -{ - desc += regloc->offset; - - abort (); /* XXX */ - return colno; -} - - static unsigned int handle_core_register (Ebl *ebl, Elf *core, int maxregname, const Ebl_Register_Location *regloc, const void *desc, unsigned int colno) { if (regloc->bits % 8 != 0) - return handle_bit_registers (regloc, desc, colno); + { + error (0, 0, "Warning: Cannot handle register with %" PRIu8 "bits\n", + regloc->bits); + return colno; + } desc += regloc->offset; diff --git a/src/srcfiles.cxx b/src/srcfiles.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3c7afdc4d038d28b94f348d6e197bf4e753825f3 --- /dev/null +++ b/src/srcfiles.cxx @@ -0,0 +1,218 @@ +/* Print the source files of a given ELF file. + Copyright (C) 2023 Red Hat, Inc. + This file is part of elfutils. + Written by Housam Alamour . + + 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 . */ + +#include "printversion.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +using namespace std; + +/* Name and version of program. */ +ARGP_PROGRAM_VERSION_HOOK_DEF = print_version; + +/* Bug report address. */ +ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; + +/* Definitions of arguments for argp functions. */ +static const struct argp_option options[] = +{ + { NULL, 0, NULL, OPTION_DOC, N_("Output options:"), 1 }, + { "null", '0', NULL, 0, + N_ ("Separate items by a null instead of a newline."), 0 }, + { "verbose", 'v', NULL, 0, + N_ ("Increase verbosity of logging messages."), 0 }, + { "cu-only", 'c', NULL, 0, N_ ("Only list the CU names."), 0 }, + { NULL, 0, NULL, 0, NULL, 0 } +}; + +/* Short description of program. */ +static const char doc[] = N_("Lists the source files of a DWARF/ELF file. The default input is the file 'a.out'."); + +/* Strings for arguments in help texts. */ +static const char args_doc[] = N_("INPUT"); + +/* Prototype for option handler. */ +static error_t parse_opt (int key, char *arg, struct argp_state *state); + +static struct argp_child argp_children[2]; /* [0] is set in main. */ + +/* Data structure to communicate with argp functions. */ +static const struct argp argp = +{ + options, parse_opt, args_doc, doc, argp_children, NULL, NULL +}; + +/* Verbose message printing. */ +static bool verbose; +/* Delimit the output with nulls. */ +static bool null_arg; +/* Only print compilation unit names. */ +static bool CU_only; + +/* Handle program arguments. */ +static error_t +parse_opt (int key, char *arg, struct argp_state *state) +{ + /* Suppress "unused parameter" warning. */ + (void)arg; + switch (key) + { + case ARGP_KEY_INIT: + state->child_inputs[0] = state->input; + break; + + case '0': + null_arg = true; + break; + + case 'v': + verbose = true; + break; + + case 'c': + CU_only = true; + break; + + default: + return ARGP_ERR_UNKNOWN; + } + return 0; +} + + +/* Global list of collected source files. Normally, it'll contain + the sources of just one named binary, but the '-K' option can cause + multiple dwfl modules to be loaded, thus listed. */ + set debug_sourcefiles; + +static int +collect_sourcefiles (Dwfl_Module *dwflmod, + void **userdata __attribute__ ((unused)), + const char *name __attribute__ ((unused)), + Dwarf_Addr base __attribute__ ((unused)), + void *arg __attribute__ ((unused))) +{ + Dwarf *dbg; + Dwarf_Addr bias; /* ignored - for addressing purposes only */ + + dbg = dwfl_module_getdwarf (dwflmod, &bias); + + Dwarf_Off offset = 0; + Dwarf_Off old_offset; + size_t hsize; + + /* Traverse all CUs of this module. */ + while (dwarf_nextcu (dbg, old_offset = offset, &offset, &hsize, NULL, NULL, NULL) == 0) + { + Dwarf_Die cudie_mem; + Dwarf_Die *cudie = dwarf_offdie (dbg, old_offset + hsize, &cudie_mem); + + if (cudie == NULL) + continue; + + const char *cuname = dwarf_diename (cudie) ?: ""; + Dwarf_Files *files; + size_t nfiles; + if (dwarf_getsrcfiles (cudie, &files, &nfiles) != 0) + continue; + + /* extract DW_AT_comp_dir to resolve relative file names */ + const char *comp_dir = ""; + const char *const *dirs; + size_t ndirs; + + if (dwarf_getsrcdirs (files, &dirs, &ndirs) == 0 && dirs[0] != NULL) + comp_dir = dirs[0]; + if (comp_dir == NULL) + comp_dir = ""; + + if (verbose) + std::clog << "searching for sources for cu=" << cuname + << " comp_dir=" << comp_dir << " #files=" << nfiles + << " #dirs=" << ndirs << endl; + + for (size_t f = 1; f < nfiles; f++) + { + const char *hat; + if (CU_only) + { + if (strcmp(cuname, "") == 0 || strcmp(cuname, "") == 0 ) + continue; + hat = cuname; + } + else + hat = dwarf_filesrc (files, f, NULL, NULL); + + if (hat == NULL) + continue; + + if (string(hat).find("") + != std::string::npos) /* gcc intrinsics, don't bother record */ + continue; + + string waldo; + if (hat[0] == '/') /* absolute */ + waldo = (string (hat)); + else if (comp_dir[0] != '\0') /* comp_dir relative */ + waldo = (string (comp_dir) + string ("/") + string (hat)); + debug_sourcefiles.insert (waldo); + } + } + + return DWARF_CB_OK; +} + + +int +main (int argc, char *argv[]) +{ + int remaining; + + /* Parse and process arguments. This includes opening the modules. */ + argp_children[0].argp = dwfl_standard_argp (); + argp_children[0].group = 1; + + Dwfl *dwfl = NULL; + (void) argp_parse (&argp, argc, argv, 0, &remaining, &dwfl); + assert (dwfl != NULL); + /* Process all loaded modules - probably just one, except if -K or -p is used. */ + (void) dwfl_getmodules (dwfl, &collect_sourcefiles, NULL, 0); + + if (!debug_sourcefiles.empty ()) + for (const string &element : debug_sourcefiles) + { + std::cout << element; + if (null_arg) + std::cout << '\0'; + else + std::cout << '\n'; + } + + dwfl_end (dwfl); + return 0; +} diff --git a/src/strings.c b/src/strings.c index 55b047be6aa7315176cf5994cdf4f71cb401bf2b..69d09ccf57ab6da4b2d65cbd2176d9a890ba4674 100644 --- a/src/strings.c +++ b/src/strings.c @@ -364,7 +364,7 @@ process_chunk_mb (const char *fname, const unsigned char *buf, off_t to, /* There is no sane way of printing the string. If we assume the file data is encoded in UCS-2/UTF-16 or - UCS-4/UTF-32 respectively we could covert the string. + UCS-4/UTF-32 respectively we could convert the string. But there is no such guarantee. */ fwrite_unlocked (start, 1, buf - start, stdout); putc_unlocked ('\n', stdout); diff --git a/src/strip.c b/src/strip.c index 2a2cc801b2979c5291a6a6ee88f0f5418478639d..7f4788b331f71a60bd15bb673a94c78265d8e50d 100644 --- a/src/strip.c +++ b/src/strip.c @@ -2543,8 +2543,7 @@ while computing checksum for debug information")); { error (0, 0, _("%s: error while creating ELF header: %s"), output_fname ?: fname, elf_errmsg (-1)); - cleanup_debug (); - return 1; + result = 1; } /* The new section header string table index. */ @@ -2552,8 +2551,7 @@ while computing checksum for debug information")); { error (0, 0, _("%s: error updating shdrstrndx: %s"), output_fname ?: fname, elf_errmsg (-1)); - cleanup_debug (); - return 1; + result = 1; } /* We have everything from the old file. */ @@ -2561,8 +2559,7 @@ while computing checksum for debug information")); { error (0, 0, _("%s: error while reading the file: %s"), fname, elf_errmsg (-1)); - cleanup_debug (); - return 1; + result = 1; } /* The ELF library better follows our layout when this is not a diff --git a/tests/ChangeLog b/tests/ChangeLog index b656029fe21e273de6610400b1177f37f961e46a..d97749f5a5df922ef0c1a625fb0a81f170f2b4b3 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,57 @@ +2023-09-27 Omar Sandoval + + * dwarf-getmacros.c (mac): Add DW_MACRO_define_sup, + DW_MACRO_define_strx, DW_MACRO_undef_sup, and DW_MACRO_undef_strx + cases to opcode switch statement. + (getmacros): New function. + (main): If second argument is empty, call getmacros on every unit. + Otherwise, call getmacros on given unit. + +2023-09-27 Omar Sandoval + + * run-varlocs.sh: Add entry PC to split units. + +2023-04-21 Frank Ch. Eigler + + * run-debuginfod-IXr.sh: New test. + * Makefile.am: Run it, ship it. + +2023-02-10 Mark Wielaard + + * varlocs.c (print_expr): Handle DW_OP_GNU_uninit. + +2023-02-07 Mark Wielaard + + * tests/funcretval.c (handle_function): Check for + DW_TAG_unspecified_type. + +2023-02-03 Mark Wielaard + + * run-addr2line-C-test.sh: Check ELFUTILS_DISABLE_DEMANGLE. + +2023-01-22 Mark Wielaard + + * testfile-inlines-lto.bz2: New testfile. + * run-addr2line-i-test.sh: Add new lto inlines test. + * Makefile.am (EXTRA_DIST): Add testfile-inlines-lto.bz2. + +2023-01-19 Mark Wielaard + + * run-addr2line-C-test.sh: New test. + * Makefile.am (TESTS): Add run-addr2line-C-test.sh. + (EXTRA_DIST): Likewise. + +2023-01-19 Mark Wielaard + + * run-debuginfod-query-retry.sh: Use libdebuginfod.so.1 instead + of /bin/sh as test file. + +2022-12-21 Shahab Vahedi + + * hello_arc_hs4.ko.bz2: New testfile. + * run-strip-reloc.sh: Add ARC HS4 test. + * Makefile.am (EXTRA_DIST): Add hello_arc_hs4.ko.bz2. + 2022-11-01 Aaron Merey * run-debuginfod-section.sh (RPM_BUILDID): Use buildid from non-zstd diff --git a/tests/Makefile.am b/tests/Makefile.am index 356b3fbfedec4c0becd711a197e5ccaa9aa0b2ec..7fb8efb13aafabaa14114ca256e92452be59a52b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -61,7 +61,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ elfcopy addsections xlate_notes elfrdwrnop \ dwelf_elf_e_machine_string \ getphdrnum leb128 read_unaligned \ - msg_tst system-elf-libelf-test \ + msg_tst system-elf-libelf-test system-elf-gelf-test \ nvidia_extended_linemap_libdw \ $(asm_TESTS) @@ -88,12 +88,16 @@ 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. But add address sanitizer if in use. +# minimal CFLAGS. But add sanitizers if in use. if USE_ADDRESS_SANITIZER EXTRA_NLIST_CFLAGS=-fsanitize=address else +if USE_MEMORY_SANITIZER +EXTRA_NLIST_CFLAGS=-fsanitize=memory -fsanitize-memory-track-origins +else EXTRA_NLIST_CFLAGS= endif +endif test-nlist$(EXEEXT): test-nlist.c $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ @@ -114,7 +118,9 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \ run-strip-test12.sh \ run-strip-nothing.sh run-strip-g.sh run-annobingroup.sh \ - run-strip-groups.sh run-strip-reloc.sh run-strip-strmerge.sh \ + run-strip-groups.sh run-strip-strmerge.sh \ + run-strip-reloc-ko.sh run-strip-reloc-self.sh \ + run-strip-reloc-ppc64.sh \ run-strip-nobitsalign.sh run-strip-remove-keep.sh \ run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-test3.sh \ run-unstrip-test4.sh run-unstrip-M.sh run-elfstrmerge-test.sh \ @@ -125,6 +131,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-find-prologues.sh run-allregs.sh run-addrcfi.sh \ run-dwarfcfi.sh run-nm-syms.sh \ run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \ + run-srcfiles-self.sh \ run-readelf-compressed.sh \ run-readelf-const-values.sh \ run-varlocs-self.sh run-exprlocs-self.sh \ @@ -151,6 +158,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-readelf-variant.sh run-readelf-fat-lto.sh \ run-dwfl-report-elf-align.sh run-addr2line-test.sh \ run-dwfl-report-offline-memory.sh \ + run-addr2line-C-test.sh \ run-addr2line-i-test.sh run-addr2line-i-lex-test.sh \ run-addr2line-i-demangle-test.sh run-addr2line-alt-debugpath.sh \ run-varlocs.sh run-exprlocs.sh run-varlocs-vars.sh run-funcretval.sh \ @@ -188,7 +196,9 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-reloc-bpf.sh \ run-next-cfi.sh run-next-cfi-self.sh \ run-reverse-sections.sh run-reverse-sections-self.sh \ - run-copyadd-sections.sh run-copymany-sections.sh \ + run-copyadd-sections.sh \ + run-copymany-be32.sh run-copymany-le32.sh \ + run-copymany-be64.sh run-copymany-le64.sh \ run-typeiter-many.sh run-strip-test-many.sh \ run-strip-version.sh run-xlate-note.sh \ run-readelf-discr.sh \ @@ -198,7 +208,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ run-pt_gnu_prop-tests.sh \ run-getphdrnum.sh run-test-includes.sh \ leb128 read_unaligned \ - msg_tst system-elf-libelf-test \ + msg_tst system-elf-libelf-test system-elf-gelf-test \ $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ run-readelf-dw-form-indirect.sh run-strip-largealign.sh \ @@ -220,6 +230,14 @@ if HAVE_ZSTD TESTS += run-readelf-compressed-zstd.sh endif +if USE_ZSTD_COMPRESS +export ELFUTILS_ZSTD = 1 +endif + +if USE_MEMORY_SANITIZER +export ELFUTILS_MEMORY_SANITIZER = 1 +endif + if DEBUGINFOD check_PROGRAMS += debuginfod_build_id_find # With the dummy delegation doesn't work @@ -248,7 +266,8 @@ TESTS += run-debuginfod-dlopen.sh \ run-debuginfod-response-headers.sh \ run-debuginfod-extraction-passive.sh \ run-debuginfod-webapi-concurrency.sh \ - run-debuginfod-section.sh + run-debuginfod-section.sh \ + run-debuginfod-IXr.sh endif if !OLD_LIBMICROHTTPD # Will crash on too old libmicrohttpd @@ -257,6 +276,12 @@ TESTS += run-debuginfod-federation-metrics.sh endif endif +if HAVE_CXX11 +check_PROGRAMS += funcretval_test++11 +funcretval_test__11_SOURCES = funcretval_test++11.cxx +TESTS += run-funcretval++11.sh +endif + EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-ar-N.sh \ run-show-die-info.sh run-get-files.sh run-get-lines.sh \ @@ -282,9 +307,12 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile-annobingroup-x86_64.o.bz2 \ run-strip-strmerge.sh run-strip-nobitsalign.sh \ testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \ - run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ + run-strip-reloc-ko.sh run-strip-reloc-self.sh \ + run-strip-reloc-ppc64.sh strip-reloc-subr.sh \ + hello_i386.ko.bz2 hello_x86_64.ko.bz2 \ hello_ppc64.ko.bz2 hello_s390.ko.bz2 hello_aarch64.ko.bz2 \ hello_m68k.ko.bz2 hello_riscv64.ko.bz2 hello_csky.ko.bz2 \ + hello_arc_hs4.ko.bz2 \ run-unstrip-test.sh run-unstrip-test2.sh \ testfile-info-link.bz2 testfile-info-link.debuginfo.bz2 \ testfile-info-link.stripped.bz2 run-unstrip-test3.sh \ @@ -296,7 +324,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.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-srcfiles-self.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 \ @@ -390,7 +419,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-readelf-Dd.sh \ testfile-s390x-hash-both.bz2 \ run-readelf-gdb_index.sh testfilegdbindex5.bz2 \ - testfilegdbindex7.bz2 \ + testfilegdbindex7.bz2 testfilegdbindex9.bz2 \ + testfilegdbindex9-no-maininfo.bz2 \ run-readelf-s.sh testfilebazdbg.bz2 testfilebazdyn.bz2 \ testfilebazmin.bz2 testfilebazdbg.debug.bz2 testfilebazmdb.bz2 \ testfilebaztab.bz2 testfilebasmin.bz2 testfilebaxmin.bz2 \ @@ -420,7 +450,9 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile-dwfl-report-elf-align-shlib.so.bz2 \ testfilenolines.bz2 test-core-lib.so.bz2 test-core.core.bz2 \ test-core.exec.bz2 run-addr2line-test.sh \ + run-addr2line-C-test.sh \ run-addr2line-i-test.sh testfile-inlines.bz2 \ + testfile-inlines-lto.bz2 \ run-addr2line-i-lex-test.sh testfile-lex-inlines.bz2 \ run-addr2line-i-demangle-test.sh run-addr2line-alt-debugpath.sh \ testfileppc32.bz2 testfileppc64.bz2 \ @@ -516,7 +548,9 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ testfile-riscv64.bz2 testfile-riscv64-s.bz2 \ testfile-riscv64-core.bz2 \ run-reverse-sections.sh run-reverse-sections-self.sh \ - run-copyadd-sections.sh run-copymany-sections.sh \ + run-copyadd-sections.sh test-copymany-subr.sh \ + run-copymany-be32.sh run-copymany-le32.sh \ + run-copymany-be64.sh run-copymany-le64.sh \ run-large-elf-file.sh \ run-typeiter-many.sh run-strip-test-many.sh \ testfile-debug-rel-ppc64-g.o.bz2 \ @@ -556,6 +590,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-debuginfod-extraction-passive.sh \ run-debuginfod-webapi-concurrency.sh \ run-debuginfod-section.sh \ + run-debuginfod-IXr.sh \ debuginfod-rpms/fedora30/hello2-1.0-2.src.rpm \ debuginfod-rpms/fedora30/hello2-1.0-2.x86_64.rpm \ debuginfod-rpms/fedora30/hello2-debuginfo-1.0-2.x86_64.rpm \ @@ -596,7 +631,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ run-readelf-dw-form-indirect.sh testfile-dw-form-indirect.bz2 \ run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ testfile_nvidia_linemap.bz2 \ - testfile-largealign.o.bz2 run-strip-largealign.sh + testfile-largealign.o.bz2 run-strip-largealign.sh \ + run-funcretval++11.sh if USE_VALGRIND @@ -641,7 +677,7 @@ installcheck-local: if BUILD_STATIC libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread -libelf = ../libelf/libelf.a -lz +libelf = ../libelf/libelf.a -lz $(zstd_LIBS) libasm = ../libasm/libasm.a else libdw = ../libdw/libdw.so @@ -772,14 +808,22 @@ leb128_LDADD = $(libelf) $(libdw) read_unaligned_LDADD = $(libelf) $(libdw) nvidia_extended_linemap_libdw_LDADD = $(libelf) $(libdw) -# We want to test the libelf header against the system elf.h header. +# We want to test the libelf headers against the system elf.h header. # Don't include any -I CPPFLAGS. Except when we install our own elf.h. +# For the gelf test we do want our own libelf.h, but nothing else. +BUILT_SOURCES = libelf.h +CLEANFILES += libelf.h +libelf.h: $(top_srcdir)/libelf/libelf.h + cp $< $@ if !INSTALL_ELFH system_elf_libelf_test_CPPFLAGS = +system_elf_gelf_test_CPPFLAGS = -I. else system_elf_libelf_test_CPPFLAGS = -I$(top_srcdir)/libelf +system_elf_gelf_test_CPPFLAGS = -I$(top_srcdir)/libelf endif system_elf_libelf_test_LDADD = $(libelf) +system_elf_gelf_test_LDADD = $(libelf) # A lock file used to make sure only one test dumps core at a time CLEANFILES += core-dump-backtrace.lock diff --git a/tests/addsections.c b/tests/addsections.c index c1b0fa81f5acaf7d586d769ab923934de314458f..a4e42038605ff7aa3bd46db1b1316acaaba6a361 100644 --- a/tests/addsections.c +++ b/tests/addsections.c @@ -153,8 +153,8 @@ add_sections (const char *name, size_t nr, int use_mmap, size_t sec_size) size_t bufsz; if (sec_size == 0) { - buf = strdup ("extra"); - bufsz = strlen ("extra") + 1; + buf = ""; + bufsz = 1; } else { @@ -293,7 +293,8 @@ add_sections (const char *name, size_t nr, int use_mmap, size_t sec_size) exit (1); } - free (buf); + if (sec_size != 0) + free (buf); free (new_shstrtab_buf); } diff --git a/tests/backtrace.aarch64.exec.bz2 b/tests/backtrace.aarch64.exec.bz2 old mode 100755 new mode 100644 diff --git a/tests/backtrace.c b/tests/backtrace.c index afc12fb939a1c24e876b731b4937656eecdb4107..555553012ff9322b701b03c7d2421612658e116a 100644 --- a/tests/backtrace.c +++ b/tests/backtrace.c @@ -90,6 +90,14 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, return; } Dwfl_Module *mod; + /* Skip frames for which there isn't a function name. */ + static int nulls_seen = 0; + if (symname == NULL) + { + nulls_seen++; + return; + } + frameno -= nulls_seen; /* See case 4. Special case to help out simple frame pointer unwinders. */ static bool duplicate_sigusr2 = false; if (duplicate_sigusr2) diff --git a/tests/backtrace.i386.fp.exec.bz2 b/tests/backtrace.i386.fp.exec.bz2 old mode 100755 new mode 100644 diff --git a/tests/backtrace.ppc64le.fp.exec.bz2 b/tests/backtrace.ppc64le.fp.exec.bz2 old mode 100755 new mode 100644 diff --git a/tests/backtrace.sparc.exec.bz2 b/tests/backtrace.sparc.exec.bz2 old mode 100755 new mode 100644 diff --git a/tests/coverage.sh b/tests/coverage.sh old mode 100755 new mode 100644 diff --git a/tests/debug-ranges-no-lowpc.s b/tests/debug-ranges-no-lowpc.s deleted file mode 100644 index 879bce29c9df4f8006b1f4caac71752c4e02d41e..0000000000000000000000000000000000000000 --- a/tests/debug-ranges-no-lowpc.s +++ /dev/null @@ -1,49 +0,0 @@ - .section .debug_info -.Lcu1_begin: - .4byte .Lcu1_end - .Lcu1_start -.Lcu1_start: - .2byte 3 /* Version */ - .4byte .Labbrev1_begin /* Abbrevs */ - .byte 8 /* Pointer size */ - .uleb128 2 /* Abbrev (DW_TAG_compile_unit) */ - .4byte 0 -.Lcu1_end: - .section .note.gnu.build-id, "a", %note - .4byte 4 - .4byte 8 - .4byte 3 - .ascii "GNU\0" - .byte 0x01 - .byte 0x02 - .byte 0x03 - .byte 0x04 - .byte 0x05 - .byte 0x06 - .byte 0x07 - .byte 0x08 - .section .debug_abbrev -.Labbrev1_begin: - .uleb128 2 /* Abbrev start */ - .uleb128 0x11 /* DW_TAG_compile_unit */ - .byte 0 /* has_children */ - .uleb128 0x55 /* DW_AT_ranges */ - .uleb128 0x06 /* DW_FORM_data4 */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - .byte 0x0 /* Terminator */ - - .section .debug_ranges - - .8byte 0xffffffffffffffff - .8byte 0 - - .8byte 1 - .8byte 2 - - .8byte 3 - .8byte 4 - - .8byte 0 - .8byte 0 - diff --git a/tests/debuginfod-rpms/hello2.spec. b/tests/debuginfod-rpms/hello2.spec. deleted file mode 100644 index 0690992f841628fc371d1b6f88f0074fa5977077..0000000000000000000000000000000000000000 --- a/tests/debuginfod-rpms/hello2.spec. +++ /dev/null @@ -1,57 +0,0 @@ -Summary: hello2 -- double hello, world rpm -Name: hello2 -Version: 1.0 -Release: 2 -Group: Utilities -License: GPL -Distribution: RPM ^W Elfutils test suite. -Vendor: Red Hat Software -Packager: Red Hat Software -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: hello2two -License: GPL - -%description two -Dittoish. - -%prep -%setup -q -n hello-1.0 - -%build -gcc -g -O1 hello.c -o hello -gcc -g -O2 -D_FORTIFY_SOURCE=2 hello.c -o hello2 - -%install -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT/usr/local/bin -cp hello $RPM_BUILD_ROOT/usr/local/bin/ -cp hello2 $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/hello2 - -%changelog -* Thu Nov 14 2019 Frank Ch. Eigler -- Added source code right here to make spec file self-contained. -- Dropped misc files not relevant to debuginfod testing. - -* Wed May 18 2016 Mark Wielaard -- Add hello2 for dwz testing support. - -* Tue Oct 20 1998 Jeff Johnson -- create. diff --git a/tests/debuginfod-rpms/hello3.spec. b/tests/debuginfod-rpms/hello3.spec. deleted file mode 100644 index ffb95134e2b66472fa3639630c6287a17fc3ab6d..0000000000000000000000000000000000000000 --- a/tests/debuginfod-rpms/hello3.spec. +++ /dev/null @@ -1,60 +0,0 @@ -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 -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 -- New variant of hello2, with crazy source file paths - -* Thu Nov 14 2019 Frank Ch. Eigler -- Dropped misc files not relevant to debuginfod testing. - -* Wed May 18 2016 Mark Wielaard -- Add hello2 for dwz testing support. - -* Tue Oct 20 1998 Jeff Johnson -- create. diff --git a/tests/debuginfod-subr.sh b/tests/debuginfod-subr.sh old mode 100755 new mode 100644 diff --git a/tests/dwarf-getmacros.c b/tests/dwarf-getmacros.c index ac70248ddabb934c1331bcfe0e9303280fa094b4..8381d42c05e863341ef812fc580ed371082f7548 100644 --- a/tests/dwarf-getmacros.c +++ b/tests/dwarf-getmacros.c @@ -82,6 +82,8 @@ mac (Dwarf_Macro *macro, void *dbg) case DW_MACINFO_define: case DW_MACRO_define_strp: + case DW_MACRO_define_sup: + case DW_MACRO_define_strx: { const char *value; dwarf_macro_param2 (macro, NULL, &value); @@ -91,6 +93,8 @@ mac (Dwarf_Macro *macro, void *dbg) case DW_MACINFO_undef: case DW_MACRO_undef_strp: + case DW_MACRO_undef_sup: + case DW_MACRO_undef_strx: break; default: @@ -117,26 +121,57 @@ include (Dwarf *dbg, Dwarf_Off macoff, ptrdiff_t token) } } +static void +getmacros (Dwarf *dbg, Dwarf_Die *die, bool new_style) +{ + for (ptrdiff_t off = new_style ? DWARF_GETMACROS_START : 0; + (off = dwarf_getmacros (die, mac, dbg, off)); ) + if (off == -1) + { + puts (dwarf_errmsg (-1)); + break; + } +} + int main (int argc, char *argv[]) { assert (argc >= 3); const char *name = argv[1]; - ptrdiff_t cuoff = strtol (argv[2], NULL, 0); bool new_style = argc > 3; int fd = open (name, O_RDONLY); Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ); - Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem); - - for (ptrdiff_t off = new_style ? DWARF_GETMACROS_START : 0; - (off = dwarf_getmacros (cudie, mac, dbg, off)); ) - if (off == -1) - { - puts (dwarf_errmsg (dwarf_errno ())); - break; - } + if (argv[2][0] == '\0') + { + Dwarf_CU *cu = NULL; + Dwarf_Die cudie, subdie; + uint8_t unit_type; + while (dwarf_get_units (dbg, cu, &cu, NULL, + &unit_type, &cudie, &subdie) == 0) + { + Dwarf_Die *die = (unit_type == DW_UT_skeleton + ? &subdie : &cudie); + if (! dwarf_hasattr (die, DW_AT_macro_info) + && ! dwarf_hasattr (die, DW_AT_GNU_macros) + && ! dwarf_hasattr (die, DW_AT_macros)) + continue; + printf ("CU %s\n", dwarf_diename (die)); + getmacros (dbg, die, new_style); + } + } + else + { + ptrdiff_t cuoff = strtol (argv[2], NULL, 0); + Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem); + if (cudie == NULL) + { + puts (dwarf_errmsg (-1)); + return 1; + } + getmacros (dbg, cudie, new_style); + } dwarf_end (dbg); diff --git a/tests/dwfl-report-offline-memory.c b/tests/dwfl-report-offline-memory.c index e6cb0a51f1c9a42231e84ac040fdb5a049479415..b3b4d9bd167c9e1d1e5bcdd469380e3984269a23 100644 --- a/tests/dwfl-report-offline-memory.c +++ b/tests/dwfl-report-offline-memory.c @@ -77,8 +77,13 @@ main (int argc, char **argv) Dwfl *dwfl = dwfl_begin (&offline_callbacks); assert (dwfl != NULL); - Dwfl_Module *mod = - dwfl_report_offline_memory (dwfl, argv[1], argv[1], data, size); + Dwfl_Module *mod; + + /* Check error handling by suppling zero data */ + mod = dwfl_report_offline_memory(dwfl, argv[1], argv[1], NULL, 0); + assert(mod == NULL); + + mod = dwfl_report_offline_memory(dwfl, argv[1], argv[1], data, size); assert (mod != NULL); dwfl_report_end (dwfl, NULL, NULL); diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c index 197c6a5d8e17fe1e17929fb5732c0f91f735ce6e..56350bb914442d8a010a284c9bdce2f129221c09 100644 --- a/tests/elfstrmerge.c +++ b/tests/elfstrmerge.c @@ -157,7 +157,7 @@ newsecndx (size_t secndx, size_t shdrstrndx, size_t shdrnum, 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) diff --git a/tests/funcretval.c b/tests/funcretval.c index 16cd1a444e8f1f9fe92f5ed3e1453e52664e9b02..41198ab7f5ee9aa6242cdd271b4798af6243afc1 100644 --- a/tests/funcretval.c +++ b/tests/funcretval.c @@ -1,5 +1,6 @@ /* Test program for dwfl_module_return_value_location. Copyright (C) 2005 Red Hat, Inc. + Copyright (C) 2023 Mark J. Wielaard This file is part of elfutils. This file is free software; you can redistribute it and/or modify @@ -67,7 +68,18 @@ handle_function (Dwarf_Die *funcdie, void *arg) error (EXIT_FAILURE, 0, "dwfl_module_return_value_location: %s", dwfl_errmsg (-1)); else if (nlocops == 0) - puts ("returns no value"); + { + // Check if this is the special unspecified type + // https://sourceware.org/bugzilla/show_bug.cgi?id=30047 + Dwarf_Die die_mem, *typedie = &die_mem; + Dwarf_Attribute attr_mem, *attr; + attr = dwarf_attr_integrate (funcdie, DW_AT_type, &attr_mem); + if (dwarf_formref_die (attr, typedie) != NULL + && dwarf_tag (typedie) == DW_TAG_unspecified_type) + puts ("returns unspecified type"); + else + puts ("returns no value"); + } else { printf ("return value location:"); diff --git a/tests/funcretval_test++11.cxx b/tests/funcretval_test++11.cxx new file mode 100644 index 0000000000000000000000000000000000000000..69e25bfb51a2df111132e06ed2230c3481abd50e --- /dev/null +++ b/tests/funcretval_test++11.cxx @@ -0,0 +1,37 @@ +/* Copyright (C) 2023 IBM Corporation + 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 . */ + +#include + +int & +foo () +{ + static int tmp; + return tmp; +} + +int && +bar () +{ + static int tmp; + return std::move(tmp); +} + +int +main () +{ + return 0; +} diff --git a/tests/funcretval_test_aarch64.bz2 b/tests/funcretval_test_aarch64.bz2 old mode 100755 new mode 100644 diff --git a/tests/hello_arc_hs4.ko.bz2 b/tests/hello_arc_hs4.ko.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..56ccb3c494e84450c7aeac5f57f94aef8336f8e0 Binary files /dev/null and b/tests/hello_arc_hs4.ko.bz2 differ diff --git a/tests/leb128.c b/tests/leb128.c index 47b57c0df900000598785d04cb843e2c48f8e1c6..03090d80fed429b25b91b584b081519acb1be10f 100644 --- a/tests/leb128.c +++ b/tests/leb128.c @@ -117,6 +117,19 @@ test_sleb (void) return OK; } +static int +test_sleb_safety (void) +{ + const int64_t expected_error = INT64_MAX; + int64_t value; + const unsigned char *test = NULL; + get_sleb128 (value, test, test); + if (value != expected_error) + return FAIL; + + return OK; +} + static int test_one_uleb (const unsigned char *data, size_t len, uint64_t expect) { @@ -166,8 +179,22 @@ test_uleb (void) return OK; } +static int +test_uleb_safety (void) +{ + const uint64_t expected_error = UINT64_MAX; + uint64_t value; + const unsigned char *test = NULL; + get_uleb128 (value, test, test); + if (value != expected_error) + return FAIL; + + return OK; +} + int main (void) { - return test_sleb () || test_uleb (); + return test_sleb () || test_sleb_safety () || test_uleb () + || test_uleb_safety (); } diff --git a/tests/libtestfile_multi_shared.so.bz2 b/tests/libtestfile_multi_shared.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/run-addr2line-C-test.sh b/tests/run-addr2line-C-test.sh new file mode 100644 index 0000000000000000000000000000000000000000..1780157dc11daa5c76a5d0391acb498062548fd4 --- /dev/null +++ b/tests/run-addr2line-C-test.sh @@ -0,0 +1,96 @@ +#! /bin/sh +# Copyright (C) 2013 Red Hat, Inc. +# Copyright (C) 2023 Mark J. Wielaard +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +if test -n "$ELFUTILS_DISABLE_DEMANGLE"; then + echo "demangler unsupported" + exit 77 +fi + +# See run-addr2line-i-test.sh +testfiles testfile-inlines + +# Three variants -Cfi, -fCi -fiC all the same (with demangle) +testrun_compare ${abs_top_builddir}/src/addr2line --pretty-print -a -Cfi -e testfile-inlines 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f0 0x00000000000005f1 0x00000000000005f2 <<\EOF +0x00000000000005a0: foobar at /tmp/x.cpp:5 +0x00000000000005a1: foobar at /tmp/x.cpp:6 +0x00000000000005b0: fubar at /tmp/x.cpp:10 +0x00000000000005b1: fubar at /tmp/x.cpp:11 +0x00000000000005c0: foobar at /tmp/x.cpp:5 + (inlined by) bar at /tmp/x.cpp:15 +0x00000000000005d0: fubar at /tmp/x.cpp:10 + (inlined by) baz at /tmp/x.cpp:20 +0x00000000000005e0: foobar at /tmp/x.cpp:5 + (inlined by) bar at /tmp/x.cpp:15 + (inlined by) foo() at /tmp/x.cpp:25 +0x00000000000005e1: fubar at /tmp/x.cpp:10 + (inlined by) baz at /tmp/x.cpp:20 + (inlined by) foo() at /tmp/x.cpp:26 +0x00000000000005f0: fu() at /tmp/x.cpp:31 +0x00000000000005f1: fubar at /tmp/x.cpp:10 + (inlined by) fu() at /tmp/x.cpp:32 +0x00000000000005f2: foobar at /tmp/x.cpp:5 + (inlined by) fu() at /tmp/x.cpp:33 +EOF + +testrun_compare ${abs_top_builddir}/src/addr2line --pretty-print -a -fCi -e testfile-inlines 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f0 0x00000000000005f1 0x00000000000005f2 <<\EOF +0x00000000000005a0: foobar at /tmp/x.cpp:5 +0x00000000000005a1: foobar at /tmp/x.cpp:6 +0x00000000000005b0: fubar at /tmp/x.cpp:10 +0x00000000000005b1: fubar at /tmp/x.cpp:11 +0x00000000000005c0: foobar at /tmp/x.cpp:5 + (inlined by) bar at /tmp/x.cpp:15 +0x00000000000005d0: fubar at /tmp/x.cpp:10 + (inlined by) baz at /tmp/x.cpp:20 +0x00000000000005e0: foobar at /tmp/x.cpp:5 + (inlined by) bar at /tmp/x.cpp:15 + (inlined by) foo() at /tmp/x.cpp:25 +0x00000000000005e1: fubar at /tmp/x.cpp:10 + (inlined by) baz at /tmp/x.cpp:20 + (inlined by) foo() at /tmp/x.cpp:26 +0x00000000000005f0: fu() at /tmp/x.cpp:31 +0x00000000000005f1: fubar at /tmp/x.cpp:10 + (inlined by) fu() at /tmp/x.cpp:32 +0x00000000000005f2: foobar at /tmp/x.cpp:5 + (inlined by) fu() at /tmp/x.cpp:33 +EOF + +testrun_compare ${abs_top_builddir}/src/addr2line --pretty-print -a -fiC -e testfile-inlines 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f0 0x00000000000005f1 0x00000000000005f2 <<\EOF +0x00000000000005a0: foobar at /tmp/x.cpp:5 +0x00000000000005a1: foobar at /tmp/x.cpp:6 +0x00000000000005b0: fubar at /tmp/x.cpp:10 +0x00000000000005b1: fubar at /tmp/x.cpp:11 +0x00000000000005c0: foobar at /tmp/x.cpp:5 + (inlined by) bar at /tmp/x.cpp:15 +0x00000000000005d0: fubar at /tmp/x.cpp:10 + (inlined by) baz at /tmp/x.cpp:20 +0x00000000000005e0: foobar at /tmp/x.cpp:5 + (inlined by) bar at /tmp/x.cpp:15 + (inlined by) foo() at /tmp/x.cpp:25 +0x00000000000005e1: fubar at /tmp/x.cpp:10 + (inlined by) baz at /tmp/x.cpp:20 + (inlined by) foo() at /tmp/x.cpp:26 +0x00000000000005f0: fu() at /tmp/x.cpp:31 +0x00000000000005f1: fubar at /tmp/x.cpp:10 + (inlined by) fu() at /tmp/x.cpp:32 +0x00000000000005f2: foobar at /tmp/x.cpp:5 + (inlined by) fu() at /tmp/x.cpp:33 +EOF + +exit 0 diff --git a/tests/run-addr2line-alt-debugpath.sh b/tests/run-addr2line-alt-debugpath.sh old mode 100755 new mode 100644 diff --git a/tests/run-addr2line-i-demangle-test.sh b/tests/run-addr2line-i-demangle-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-addr2line-i-lex-test.sh b/tests/run-addr2line-i-lex-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-addr2line-i-test.sh b/tests/run-addr2line-i-test.sh old mode 100755 new mode 100644 index d08f3cba5ba9d906127d4f25931e0d2d6165f9c4..e7b890831306e1257593b58f249242cc1d3af9ea --- a/tests/run-addr2line-i-test.sh +++ b/tests/run-addr2line-i-test.sh @@ -220,4 +220,47 @@ testrun_compare ${abs_top_builddir}/src/addr2line --pretty-print -a -f -i -e tes (inlined by) _Z2fuv at /tmp/x.cpp:33 EOF +# == x.cpp == +# g++ x.cpp -g -fPIC -olibx.so -shared -O0 -flto +# +# __attribute__((always_inline)) inline +# int foobar(int i) +# { +# return i + 1; +# } +# +# __attribute__((always_inline)) inline +# int fubar(int i) +# { +# return i + 1; +# } +# +# __attribute__((always_inline)) inline +# int bar(int i) +# { +# return fubar(i++); +# } +# +# __attribute__((always_inline)) inline +# int foo(int i) +# { +# return foobar(i++); +# } +# +# int fu(int i) +# { +# return foo(i++) + bar(i++); +# } + +testfiles testfile-inlines-lto + +testrun_compare ${abs_top_builddir}/src/addr2line --pretty -fi -e testfile-inlines-lto 0x1118 0x1137 <<\EOF +_Z6foobari at /tmp/x.cpp:4:14 + (inlined by) _Z3fooi at /tmp/x.cpp:22:16 + (inlined by) _Z2fui at /tmp/x.cpp:27:13 +_Z5fubari at /tmp/x.cpp:10:14 + (inlined by) _Z3bari at /tmp/x.cpp:16:15 + (inlined by) _Z2fui at /tmp/x.cpp:27:24 +EOF + exit 0 diff --git a/tests/run-addr2line-test.sh b/tests/run-addr2line-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-addrcfi.sh b/tests/run-addrcfi.sh old mode 100755 new mode 100644 diff --git a/tests/run-addrname-test.sh b/tests/run-addrname-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-addrscopes.sh b/tests/run-addrscopes.sh old mode 100755 new mode 100644 diff --git a/tests/run-aggregate-size.sh b/tests/run-aggregate-size.sh old mode 100755 new mode 100644 diff --git a/tests/run-all-dwarf-ranges.sh b/tests/run-all-dwarf-ranges.sh old mode 100755 new mode 100644 diff --git a/tests/run-alldts.sh b/tests/run-alldts.sh old mode 100755 new mode 100644 diff --git a/tests/run-allfcts-multi.sh b/tests/run-allfcts-multi.sh old mode 100755 new mode 100644 diff --git a/tests/run-allfcts.sh b/tests/run-allfcts.sh old mode 100755 new mode 100644 diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh old mode 100755 new mode 100644 diff --git a/tests/run-annobingroup.sh b/tests/run-annobingroup.sh old mode 100755 new mode 100644 diff --git a/tests/run-ar-N.sh b/tests/run-ar-N.sh old mode 100755 new mode 100644 diff --git a/tests/run-ar.sh b/tests/run-ar.sh old mode 100755 new mode 100644 diff --git a/tests/run-arextract.sh b/tests/run-arextract.sh old mode 100755 new mode 100644 diff --git a/tests/run-arsymtest.sh b/tests/run-arsymtest.sh old mode 100755 new mode 100644 diff --git a/tests/run-attr-integrate-skel.sh b/tests/run-attr-integrate-skel.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-aarch64.sh b/tests/run-backtrace-core-aarch64.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-i386.sh b/tests/run-backtrace-core-i386.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-ppc.sh b/tests/run-backtrace-core-ppc.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-s390.sh b/tests/run-backtrace-core-s390.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-s390x.sh b/tests/run-backtrace-core-s390x.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-sparc.sh b/tests/run-backtrace-core-sparc.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-x32.sh b/tests/run-backtrace-core-x32.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-core-x86_64.sh b/tests/run-backtrace-core-x86_64.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-data.sh b/tests/run-backtrace-data.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-demangle.sh b/tests/run-backtrace-demangle.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-dwarf.sh b/tests/run-backtrace-dwarf.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-fp-core-aarch64.sh b/tests/run-backtrace-fp-core-aarch64.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-fp-core-i386.sh b/tests/run-backtrace-fp-core-i386.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-fp-core-ppc64le.sh b/tests/run-backtrace-fp-core-ppc64le.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-fp-core-x86_64.sh b/tests/run-backtrace-fp-core-x86_64.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-native-biarch.sh b/tests/run-backtrace-native-biarch.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-native-core-biarch.sh b/tests/run-backtrace-native-core-biarch.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-native-core.sh b/tests/run-backtrace-native-core.sh old mode 100755 new mode 100644 diff --git a/tests/run-backtrace-native.sh b/tests/run-backtrace-native.sh old mode 100755 new mode 100644 diff --git a/tests/run-bug1-test.sh b/tests/run-bug1-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-buildid.sh b/tests/run-buildid.sh old mode 100755 new mode 100644 diff --git a/tests/run-compress-test.sh b/tests/run-compress-test.sh old mode 100755 new mode 100644 index a6a298f5a81c1b191aea9425323f246059045237..2d4eebd61894ab974149c9ec333a08b701d57794 --- a/tests/run-compress-test.sh +++ b/tests/run-compress-test.sh @@ -61,6 +61,34 @@ testrun_elfcompress_file() echo "uncompress $elfcompressedfile -> $elfuncompressedfile" testrun ${abs_top_builddir}/src/elfcompress -v -t none -o ${elfuncompressedfile} ${elfcompressedfile} testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${elfuncompressedfile} + + if test -z "$ELFUTILS_ZSTD"; then + return; + fi + + outputfile="${infile}.gabi.zstd" + tempfiles "$outputfile" + echo "zstd compress $elfcompressedfile -> $outputfile" + testrun ${abs_top_builddir}/src/elfcompress -v -t zstd -o ${outputfile} ${elfcompressedfile} + testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${outputfile} + echo "checking compressed section header" $outputfile + testrun ${abs_top_builddir}/src/readelf -Sz ${outputfile} | grep "ELF ZSTD" >/dev/null + + zstdfile="${infile}.zstd" + tempfiles "$zstdfile" + echo "zstd compress $uncompressedfile -> $zstdfile" + testrun ${abs_top_builddir}/src/elfcompress -v -t zstd -o ${zstdfile} ${elfuncompressedfile} + testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${zstdfile} + echo "checking compressed section header" $zstdfile + testrun ${abs_top_builddir}/src/readelf -Sz ${zstdfile} | grep "ELF ZSTD" >/dev/null + + zstdgnufile="${infile}.zstd.gnu" + tempfiles "$zstdgnufile" + echo "zstd re-compress to GNU ZLIB $zstdfile -> $zstdgnufile" + testrun ${abs_top_builddir}/src/elfcompress -v -t zlib-gnu -o ${zstdgnufile} ${zstdfile} + testrun ${abs_top_builddir}/src/elfcmp ${uncompressedfile} ${zstdgnufile} + echo "checking .zdebug section name" $zstdgnufile + testrun ${abs_top_builddir}/src/readelf -S ${zstdgnufile} | grep ".zdebug" >/dev/null } testrun_elfcompress() diff --git a/tests/run-copyadd-sections.sh b/tests/run-copyadd-sections.sh old mode 100755 new mode 100644 diff --git a/tests/run-copymany-be32.sh b/tests/run-copymany-be32.sh new file mode 100644 index 0000000000000000000000000000000000000000..dc32e7a99f6df95ed128ce9817987500fe65c9e2 --- /dev/null +++ b/tests/run-copymany-be32.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +. $srcdir/test-copymany-subr.sh + +# 32bit, big endian, rel +testfiles testfile29 +test_copy_and_add testfile29 +test_copy_and_add testfile29.copy + +# 32bit, big endian, non-rel +testfiles testfile26 +test_copy_and_add testfile26 +test_copy_and_add testfile26.copy + +exit 0 diff --git a/tests/run-copymany-be64.sh b/tests/run-copymany-be64.sh new file mode 100644 index 0000000000000000000000000000000000000000..1f06e077705b794648339413c513db791d551d5e --- /dev/null +++ b/tests/run-copymany-be64.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +. $srcdir/test-copymany-subr.sh + +# 64bit, big endian, rel +testfiles testfile23 +test_copy_and_add testfile23 +test_copy_and_add testfile23.copy + +# 64bit, big endian, non-rel +testfiles testfile27 +test_copy_and_add testfile27 +test_copy_and_add testfile27.copy + +exit 0 diff --git a/tests/run-copymany-le32.sh b/tests/run-copymany-le32.sh new file mode 100644 index 0000000000000000000000000000000000000000..d47a90edde80f9f582659c6d51705c6755d223f6 --- /dev/null +++ b/tests/run-copymany-le32.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +. $srcdir/test-copymany-subr.sh + +# 32bit, little endian, rel +testfiles testfile9 +test_copy_and_add testfile9 +test_copy_and_add testfile9.copy + +# 32bit, little endian, non-rel +testfiles testfile +test_copy_and_add testfile +test_copy_and_add testfile.copy + +exit 0 diff --git a/tests/run-copymany-le64.sh b/tests/run-copymany-le64.sh new file mode 100644 index 0000000000000000000000000000000000000000..b563d9de49585dcb92d41a3f270a88dd30fe7bf1 --- /dev/null +++ b/tests/run-copymany-le64.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +. $srcdir/test-copymany-subr.sh + +# 64bit, little endian, rel +testfiles testfile38 +test_copy_and_add testfile38 +test_copy_and_add testfile38.copy + +# 64bit, little endian, non-rel +testfiles testfile10 +test_copy_and_add testfile10 +test_copy_and_add testfile10.copy + +exit 0 diff --git a/tests/run-debugaltlink.sh b/tests/run-debugaltlink.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-IXr.sh b/tests/run-debuginfod-IXr.sh new file mode 100644 index 0000000000000000000000000000000000000000..631b7bbfbfd28263abf59b31b60f922e406d493a --- /dev/null +++ b/tests/run-debuginfod-IXr.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash +# +# Copyright (C) 2019-2023 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/debuginfod-subr.sh + +# for test case debugging, uncomment: +set -x +unset VALGRIND_CMD + +mkdir R Z +# This variable is essential and ensures no time-race for claiming ports occurs +# set base to a unique multiple of 100 not used in any other 'run-debuginfod-*' test +base=10100 +get_ports + +DB=${PWD}/.debuginfod_tmp.sqlite +tempfiles $DB +export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache + +cp -rvp ${abs_srcdir}/debuginfod-rpms R + +if [ "$zstd" = "false" ]; then # nuke the zstd fedora 31 ones + rm -vrf R/debuginfod-rpms/fedora31 + rpms=0 + tarxz=1 + groomed=2 +else + rpms=6 + tarxz=1 + groomed=8 +fi + +cp -rvp ${abs_srcdir}/debuginfod-tars Z + +env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -X 'hello2' -I 'hello' -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v R Z > vlog$PORT1 2>&1 & +PID1=$! +tempfiles vlog$PORT1 +errfiles vlog$PORT1 +# Server must become ready +wait_ready $PORT1 'ready' 1 + +# Wait till both files are in the index and scan/index fully finished +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 + +# Confirm that the hello3 files are excluded + +wait_ready $PORT1 'scanned_files_total{source=".rpm archive"}' $rpms +wait_ready $PORT1 'scanned_files_total{source=".tar.xz archive"}' $tarxz + + +kill $PID1 +wait $PID1 +PID1=0 + +# Start second debuginfod, with exclusion of everything + +echo 'RERUN WITH -r and -X everything' >> vlog$PORT1 + +env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -r -X '.*' -F -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v R Z >> vlog$PORT1 2>&1 & +PID1=$! +tempfiles vlog$PORT1 +errfiles vlog$PORT1 +# Server must become ready +wait_ready $PORT1 'ready' 1 + +wait_ready $PORT1 'thread_work_total{role="groom"}' 1 +wait_ready $PORT1 'thread_work_pending{role="scan"}' 0 +wait_ready $PORT1 'thread_busy{role="scan"}' 0 + +wait_ready $PORT1 'groomed_total{decision="stale"}' $groomed +wait_ready $PORT1 'groom{statistic="files scanned (#)"}' 0 + +kill $PID1 +wait $PID1 +PID1=0 + +exit 0 diff --git a/tests/run-debuginfod-archive-groom.sh b/tests/run-debuginfod-archive-groom.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-archive-rename.sh b/tests/run-debuginfod-archive-rename.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-archive-test.sh b/tests/run-debuginfod-archive-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-artifact-running.sh b/tests/run-debuginfod-artifact-running.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-dlopen.sh b/tests/run-debuginfod-dlopen.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-duplicate-urls.sh b/tests/run-debuginfod-duplicate-urls.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-extraction-passive.sh b/tests/run-debuginfod-extraction-passive.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-extraction.sh b/tests/run-debuginfod-extraction.sh old mode 100755 new mode 100644 index a3722c90d218e3edcccf2575a25123653840a252..da6b25cf89dc4a444a52c67561e5aa6df20de024 --- a/tests/run-debuginfod-extraction.sh +++ b/tests/run-debuginfod-extraction.sh @@ -32,7 +32,7 @@ DB=${PWD}/.debuginfod_tmp.sqlite tempfiles $DB export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache -env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -F -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v R Z > vlog$PORT1 2>&1 & +env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -F -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 --scan-checkpoint=1 -t0 -g0 -v R Z > vlog$PORT1 2>&1 & PID1=$! tempfiles vlog$PORT1 errfiles vlog$PORT1 @@ -45,7 +45,7 @@ ps -q $PID1 -e -L -o '%p %c %a' | grep scan ps -q $PID1 -e -L -o '%p %c %a' | grep traverse # Make sure the initial scan has finished before copying the new files in -# We might remove some, which we don't want to be accidentially scanned. +# We might remove some, which we don't want to be accidentally scanned. wait_ready $PORT1 'thread_work_total{role="traverse"}' 1 cp -rvp ${abs_srcdir}/debuginfod-rpms R @@ -61,6 +61,9 @@ 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 +# Take a dump if possible +type sqlite3 2>/dev/null && sqlite3 $DB '.d' + ######################################################################## # All rpms need to be in the index, except the dummy permission-000 one rpms=$(find R -name \*rpm | grep -v nothing | wc -l) diff --git a/tests/run-debuginfod-fd-prefetch-caches.sh b/tests/run-debuginfod-fd-prefetch-caches.sh old mode 100755 new mode 100644 index a538cd48781e58c06d5265e3ddc68cdfff490215..3db78ade53a9fa55c9695eafc2cda817fccd689d --- a/tests/run-debuginfod-fd-prefetch-caches.sh +++ b/tests/run-debuginfod-fd-prefetch-caches.sh @@ -50,7 +50,7 @@ export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache rm -rf $DEBUGINFOD_CACHE_PATH rm -rf $DB # Testing prefetch fd maximum (Set mb maximums to be beyond consideration) -# Set --fdcache-mintmp=0 so we don't accidentially trigger an fdcache +# Set --fdcache-mintmp=0 so we don't accidentally trigger an fdcache # emergency flush for filling tmpdir env LD_LIBRARY_PATH=$ldpath DEBUGINFOD_URLS= ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -p $PORT1 -d $DB \ --fdcache-fds=$FDCACHE_FDS --fdcache-prefetch-fds=$PREFETCH_FDS -vvvvv -g 0 -t 0 \ diff --git a/tests/run-debuginfod-federation-link.sh b/tests/run-debuginfod-federation-link.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-federation-metrics.sh b/tests/run-debuginfod-federation-metrics.sh old mode 100755 new mode 100644 index 3d7162466e532cb4dfd9f355de46875565aac388..60fe69ca4f251e47bde32be92bb498defd127517 --- a/tests/run-debuginfod-federation-metrics.sh +++ b/tests/run-debuginfod-federation-metrics.sh @@ -191,7 +191,8 @@ curl -s http://127.0.0.1:$PORT2/metrics | grep 'dc_pool_op.*reuse' # Use a file that hasn't been previously extracted in to make it # likely that even this test debuginfod will experience concurrency # and impose some "after-you" delays. -(for i in `seq 100`; do +maxreq=256 +(for i in `seq $maxreq`; do curl -s http://127.0.0.1:$PORT1/buildid/87c08d12c78174f1082b7c888b3238219b0eb265/executable >/dev/null & done; wait) diff --git a/tests/run-debuginfod-federation-sqlite.sh b/tests/run-debuginfod-federation-sqlite.sh old mode 100755 new mode 100644 index d93215266d33d63401642e46b3c50189e637823e..6b090074da0def056dd66a5fa952e1887e5e5577 --- a/tests/run-debuginfod-federation-sqlite.sh +++ b/tests/run-debuginfod-federation-sqlite.sh @@ -157,7 +157,9 @@ testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID # Use a file that hasn't been previously extracted in to make it # likely that even this test debuginfod will experience concurrency # and impose some "after-you" delays. -(for i in `seq 100`; do +maxreq=$[$(nproc) * 4] +maxreq=$(( $maxreq > 64 ? 64 : $maxreq )) +(for i in `seq $maxreq`; do curl -s http://127.0.0.1:$PORT1/buildid/87c08d12c78174f1082b7c888b3238219b0eb265/executable >/dev/null & done; wait) diff --git a/tests/run-debuginfod-file.sh b/tests/run-debuginfod-file.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh deleted file mode 100755 index 9183cccb72016deabbc3a5f49c53a8d2b7489c2d..0000000000000000000000000000000000000000 --- a/tests/run-debuginfod-find.sh +++ /dev/null @@ -1,677 +0,0 @@ -#!/usr/bin/env bash -# -# 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 -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# elfutils is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -. $srcdir/test-subr.sh # includes set -e - -type curl 2>/dev/null || (echo "need curl"; exit 77) -type rpm2cpio 2>/dev/null || (echo "need rpm2cpio"; exit 77) -type cpio 2>/dev/null || (echo "need cpio"; 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=-vvv - -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 D L Z ${PWD}/foobar ${PWD}/mocktree ${PWD}/.client_cache* ${PWD}/tmp* - exit_cleanup -} - -# clean up trash if we were aborted early -trap cleanup 0 1 2 3 5 9 15 - -errfiles_list= -err() { - for ports in $PORT1 $PORT2 - do - echo $port metrics - curl -s http://127.0.0.1:$port/metrics - echo - done - for x in $errfiles_list - do - echo "$x" - cat $x - echo - done -} -trap err ERR - -errfiles() { - errfiles_list="$errfiles_list $*" -} - - - -# find an unused port number -while true; do - PORT1=`expr '(' $RANDOM % 1000 ')' + 9000` - ss -atn | fgrep ":$PORT1" || break -done - -# We want to run debuginfod in the background. We also want to start -# it with the same check/installcheck-sensitive LD_LIBRARY_PATH stuff -# that the testrun alias sets. But: we if we just use -# testrun .../debuginfod -# it runs in a subshell, with different pid, so not helpful. -# -# So we gather the LD_LIBRARY_PATH with this cunning trick: -ldpath=`testrun sh -c 'echo $LD_LIBRARY_PATH'` - -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() -{ - port=$1; - what=$2; - value=$3; - timeout=20; - - echo "Wait $timeout seconds on $port for metric $what to change to $value" - while [ $timeout -gt 0 ]; do - mvalue="$(curl -s http://127.0.0.1:$port/metrics \ - | grep "$what" | awk '{print $NF}')" - if [ -z "$mvalue" ]; then mvalue=0; fi - echo "metric $what: $mvalue" - if [ "$mvalue" -eq "$value" ]; then - break; - fi - sleep 0.5; - ((timeout--)); - done; - - if [ $timeout -eq 0 ]; then - echo "metric $what never changed to $value on port $port" - exit 1; - fi -} - -# 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 > vlog$PORT1 2>&1 & -PID1=$! -tempfiles vlog$PORT1 -errfiles vlog$PORT1 -# Server must become ready -wait_ready $PORT1 'ready' 1 -export DEBUGINFOD_URLS=http://127.0.0.1:$PORT1/ # or without trailing / - -# Be patient when run on a busy machine things might take a bit. -export DEBUGINFOD_TIMEOUT=10 - -# Check thread comm names -ps -q $PID1 -e -L -o '%p %c %a' | grep groom -ps -q $PID1 -e -L -o '%p %c %a' | grep scan -ps -q $PID1 -e -L -o '%p %c %a' | grep traverse - -# We use -t0 and -g0 here to turn off time-based scanning & grooming. -# For testing purposes, we just sic SIGUSR1 / SIGUSR2 at the process. - -######################################################################## - -# Compile a simple program, strip its debuginfo and save the build-id. -# Also move the debuginfo into another directory so that elfutils -# cannot find it without debuginfod. -echo "int main() { return 0; }" > ${PWD}/prog.c -tempfiles prog.c -# 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{role="traverse"}' 2 -wait_ready $PORT1 'thread_work_pending{role="scan"}' 0 -wait_ready $PORT1 'thread_busy{role="scan"}' 0 - -######################################################################## - -# Test whether elfutils, via the debuginfod client library dlopen hooks, -# is able to fetch debuginfo from the local debuginfod. -testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog 1 - -######################################################################## - -# PR25628 -rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests - -# The query is designed to fail, while the 000-permission file should be created. -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo 01234567 || true -if [ ! -f $DEBUGINFOD_CACHE_PATH/01234567/debuginfo ]; then - echo "could not find cache in $DEBUGINFOD_CACHE_PATH" - exit 1 -fi - -if [ -r $DEBUGINFOD_CACHE_PATH/01234567/debuginfo ]; then - echo "The cache $DEBUGINFOD_CACHE_PATH/01234567/debuginfo is readable" - exit 1 -fi - -bytecount_before=`curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count{code="404"}'` -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo 01234567 || true -bytecount_after=`curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count{code="404"}'` -if [ "$bytecount_before" != "$bytecount_after" ]; then - echo "http_responses_transfer_bytes_count{code="404"} has changed." - exit 1 -fi - -# set cache_miss_s to 0 and sleep 1 to make the mtime expire. -echo 0 > $DEBUGINFOD_CACHE_PATH/cache_miss_s -sleep 1 -bytecount_before=`curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count{code="404"}'` -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo 01234567 || true -bytecount_after=`curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count{code="404"}'` -if [ "$bytecount_before" == "$bytecount_after" ]; then - echo "http_responses_transfer_bytes_count{code="404"} should be incremented." - exit 1 -fi -######################################################################## - -# Test whether debuginfod-find is able to fetch those files. -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 -if [ -w $filename ]; then - echo "cache file writable, boo" - exit 1 -fi - -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. - -# Build another, non-stripped binary -echo "int main() { return 0; }" > ${PWD}/prog2.c -tempfiles 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{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 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 -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, 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 :) -# We will need to extract all rpms (in their own directory) and could all -# sources referenced in the .debug files. -mkdir extracted -cd extracted -subdir=0; -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 -ivd; - cd ..; -done -sourcefiles=$(find -name \*\\.debug \ - | env LD_LIBRARY_PATH=$ldpath xargs \ - ${abs_top_builddir}/src/readelf --debug-dump=decodedline \ - | grep mtime: | wc --lines) -cd .. -rm -rf extracted - -wait_ready $PORT1 'found_sourcerefs_total{source=".rpm archive"}' $sourcefiles - -# Run a bank of queries against the debuginfod-rpms / debuginfod-debs test cases - -archive_test() { - __BUILDID=$1 - __SOURCEPATH=$2 - __SOURCESHA1=$3 - - 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 - # 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 - 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 -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 -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 -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 - - -######################################################################## - -# Drop some of the artifacts, run a groom cycle; confirm that -# debuginfod has forgotten them, but remembers others - -rm -r R/debuginfod-rpms/rhel6/* -kill -USR2 $PID1 # groom cycle -# 1 groom cycle already took place at/soon-after startup, so -USR2 makes 2 -wait_ready $PORT1 'thread_work_total{role="groom"}' 2 -# Expect 4 rpms containing 2 buildids to be deleted by the groom -wait_ready $PORT1 'groomed_total{decision="stale"}' 4 - -rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests - -# this is one of the buildids from the groom-deleted rpms -testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $RPM_BUILDID && false || true -# but this one was not deleted so should be still around -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)' vlog$PORT1 - -######################################################################## - -# Federation mode - -# find another unused port -while true; do - PORT2=`expr '(' $RANDOM % 1000 ')' + 9000` - ss -atn | fgrep ":$PORT2" || break -done - -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 $VERBOSE -F -U -d ${DB}_2 -p $PORT2 -L L D > vlog$PORT2 2>&1 & -PID2=$! -tempfiles vlog$PORT2 -errfiles vlog$PORT2 -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 vlog$PORT1 -curl -s -H 'User-Agent: TESTCURL' -H 'X-Forwarded-For: TESTXFF' $DEBUGINFOD_URLS/buildid/deaddeadbeef00000000/debuginfo -o /dev/null || true - -grep UA:TESTCURL vlog$PORT1 -grep XFF:TESTXFF vlog$PORT1 - - -# 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` -file L/foo -file -L L/foo -export DEBUGINFOD_URLS=http://127.0.0.1:$PORT1 -rm -rf $DEBUGINFOD_CACHE_PATH -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID && false || true -rm -f $DEBUGINFOD_CACHE_PATH/$BUILDID/debuginfo # drop 000-perm negative-hit file -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 -rm -f $DEBUGINFOD_CACHE_PATH/$BUILDID/debuginfo # drop 000-perm negative-hit file -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 -mkdir -p $DEBUGINFOD_CACHE_PATH -export DEBUGINFOD_URLS="BAD http://127.0.0.1:$PORT1 127.0.0.1:$PORT1 http://127.0.0.1:$PORT2 DNE" - -testrun ${abs_builddir}/debuginfod_build_id_find -e F/prog2 1 - -######################################################################## - -# 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 -# NB: this error is used to seed the 404 failure for the survive-404 tests - -# Confirm bad artifact types are rejected without leaving trace -curl -s http://127.0.0.1:$PORT2/buildid/deadbeef/badtype > /dev/null || true -(curl -s http://127.0.0.1:$PORT2/metrics | grep 'badtype') && false - -# Confirm that reused curl connections survive 404 errors. -# The rm's force an uncached fetch -rm -f $DEBUGINFOD_CACHE_PATH/$BUILDID/debuginfo .client_cache*/$BUILDID/debuginfo -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID -rm -f $DEBUGINFOD_CACHE_PATH/$BUILDID/debuginfo .client_cache*/$BUILDID/debuginfo -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID -rm -f $DEBUGINFOD_CACHE_PATH/$BUILDID/debuginfo .client_cache*/$BUILDID/debuginfo -testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID - -# Confirm that some debuginfod client pools are being used -curl -s http://127.0.0.1:$PORT2/metrics | grep 'dc_pool_op.*reuse' - -######################################################################## -# 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' - -######################################################################## - -# Run the tests again without the servers running. The target file should -# be found in the cache. - -kill -INT $PID1 $PID2 -wait $PID1 $PID2 -PID1=0 -PID2=0 -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 vlog$PORT2 -grep -q 'UA:.*XFF:.*GET /buildid/.* 200 ' vlog$PORT2 -grep -q 'UA:.*XFF:.*GET /metrics 200 ' vlog$PORT2 -grep -q 'UA:.*XFF:.*GET /badapi 503 ' vlog$PORT2 -grep -q 'UA:.*XFF:.*GET /buildid/deadbeef.* 404 ' vlog$PORT2 - -######################################################################## - -# 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 - -# A valid format for an empty buildid subdirectory -mkdir $DEBUGINFOD_CACHE_PATH/00000000 -touch -d '1970-01-01' $DEBUGINFOD_CACHE_PATH/00000000 # old enough to guarantee nukage - -# 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 -echo 0 > $DEBUGINFOD_CACHE_PATH/max_unused_age_s - -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 - -if [ -d $DEBUGINFOD_CACHE_PATH/00000000 ]; then - echo "failed to rmdir old cache dir" - 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-debuginfod-malformed.sh b/tests/run-debuginfod-malformed.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-negative-cache.sh b/tests/run-debuginfod-negative-cache.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-no-urls.sh b/tests/run-debuginfod-no-urls.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-percent-escape.sh b/tests/run-debuginfod-percent-escape.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-query-retry.sh b/tests/run-debuginfod-query-retry.sh old mode 100755 new mode 100644 index 0cfdba92d5e38053abd3b2f30dcab67fa7672d5e..d2cdfd6593d48f867596bcd51fbce720b602d713 --- a/tests/run-debuginfod-query-retry.sh +++ b/tests/run-debuginfod-query-retry.sh @@ -25,8 +25,9 @@ unset VALGRIND_CMD ######################################################################## # set up tests for retrying failed queries. retry_attempts=`(testrun env DEBUGINFOD_URLS=http://255.255.255.255/JUNKJUNK DEBUGINFOD_RETRY_LIMIT=10 DEBUGINFOD_VERBOSE=1 DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache \ - ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo /bin/sh || true) 2>&1 >/dev/null \ - | grep -c 'Retry failed query'` + ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo \ + ${abs_top_builddir}/debuginfod/debuginfod-find || true) \ + 2>&1 >/dev/null | grep -c 'Retry failed query'` if [ $retry_attempts -ne 10 ]; then echo "retry mechanism failed." exit 1; diff --git a/tests/run-debuginfod-regex.sh b/tests/run-debuginfod-regex.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-response-headers.sh b/tests/run-debuginfod-response-headers.sh old mode 100755 new mode 100644 index 8cb7b843d19db412d64ac49c811a0107164046f8..fbb6a4842fa459bbfc0750d93ac881ef76ae8e22 --- a/tests/run-debuginfod-response-headers.sh +++ b/tests/run-debuginfod-response-headers.sh @@ -78,8 +78,8 @@ tempfiles vlog-find$PORT1.1 errfiles vlog-find$PORT1.1 cat vlog-find$PORT1.1 grep 'Headers:' vlog-find$PORT1.1 -grep -i 'X-DEBUGINFOD-FILE: prog' vlog-find$PORT1.1 -grep -i 'X-DEBUGINFOD-SIZE: ' vlog-find$PORT1.1 +grep -i 'X-DEBUGINFOD-FILE: .*/prog' vlog-find$PORT1.1 +grep -i 'X-DEBUGINFOD-SIZE: ' vlog-find$PORT1.1 # Check to see if an executable file located in an archive prints the file's description and archive env DEBUGINFOD_URLS="http://127.0.0.1:"$PORT1 LD_LIBRARY_PATH=$ldpath ${abs_top_builddir}/debuginfod/debuginfod-find\ @@ -88,9 +88,9 @@ tempfiles vlog-find$PORT1.2 errfiles vlog-find$PORT1.2 cat vlog-find$PORT1.2 grep 'Headers:' vlog-find$PORT1.2 -grep -i 'X-DEBUGINFOD-FILE: ' vlog-find$PORT1.2 +grep -i 'X-DEBUGINFOD-FILE: .*/.*' vlog-find$PORT1.2 grep -i 'X-DEBUGINFOD-SIZE: ' vlog-find$PORT1.2 -grep -i 'X-DEBUGINFOD-ARCHIVE: ' vlog-find$PORT1.2 +grep -i 'X-DEBUGINFOD-ARCHIVE: .*/.*' vlog-find$PORT1.2 # Check that X-DEBUGINFOD-SIZE matches the size of each file for file in vlog-find$PORT1.1 vlog-find$PORT1.2 diff --git a/tests/run-debuginfod-section.sh b/tests/run-debuginfod-section.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-sizetime.sh b/tests/run-debuginfod-sizetime.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-tmp-home.sh b/tests/run-debuginfod-tmp-home.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-webapi-concurrency.sh b/tests/run-debuginfod-webapi-concurrency.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-writable.sh b/tests/run-debuginfod-writable.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuginfod-x-forwarded-for.sh b/tests/run-debuginfod-x-forwarded-for.sh old mode 100755 new mode 100644 diff --git a/tests/run-debuglink.sh b/tests/run-debuglink.sh old mode 100755 new mode 100644 diff --git a/tests/run-deleted.sh b/tests/run-deleted.sh old mode 100755 new mode 100644 diff --git a/tests/run-disasm-bpf.sh b/tests/run-disasm-bpf.sh old mode 100755 new mode 100644 diff --git a/tests/run-disasm-riscv64.sh b/tests/run-disasm-riscv64.sh old mode 100755 new mode 100644 diff --git a/tests/run-disasm-x86-64.sh b/tests/run-disasm-x86-64.sh old mode 100755 new mode 100644 diff --git a/tests/run-disasm-x86.sh b/tests/run-disasm-x86.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwarf-die-addr-die.sh b/tests/run-dwarf-die-addr-die.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwarf-getmacros.sh b/tests/run-dwarf-getmacros.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwarf-getstring.sh b/tests/run-dwarf-getstring.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwarf-ranges.sh b/tests/run-dwarf-ranges.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwarfcfi.sh b/tests/run-dwarfcfi.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwelf_elf_e_machine_string.sh b/tests/run-dwelf_elf_e_machine_string.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwelfgnucompressed.sh b/tests/run-dwelfgnucompressed.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwfl-addr-sect.sh b/tests/run-dwfl-addr-sect.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwfl-bug-offline-rel.sh b/tests/run-dwfl-bug-offline-rel.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwfl-report-elf-align.sh b/tests/run-dwfl-report-elf-align.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwfl-report-offline-memory.sh b/tests/run-dwfl-report-offline-memory.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwfllines.sh b/tests/run-dwfllines.sh old mode 100755 new mode 100644 diff --git a/tests/run-dwflsyms.sh b/tests/run-dwflsyms.sh old mode 100755 new mode 100644 diff --git a/tests/run-early-offscn.sh b/tests/run-early-offscn.sh old mode 100755 new mode 100644 diff --git a/tests/run-ecp-test.sh b/tests/run-ecp-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-ecp-test2.sh b/tests/run-ecp-test2.sh old mode 100755 new mode 100644 diff --git a/tests/run-elf_cntl_gelf_getshdr.sh b/tests/run-elf_cntl_gelf_getshdr.sh old mode 100755 new mode 100644 diff --git a/tests/run-elfclassify-self.sh b/tests/run-elfclassify-self.sh old mode 100755 new mode 100644 diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh old mode 100755 new mode 100644 diff --git a/tests/run-elfgetchdr.sh b/tests/run-elfgetchdr.sh old mode 100755 new mode 100644 diff --git a/tests/run-elfgetzdata.sh b/tests/run-elfgetzdata.sh old mode 100755 new mode 100644 diff --git a/tests/run-elflint-self.sh b/tests/run-elflint-self.sh old mode 100755 new mode 100644 diff --git a/tests/run-elflint-test.sh b/tests/run-elflint-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-elfputzdata.sh b/tests/run-elfputzdata.sh old mode 100755 new mode 100644 diff --git a/tests/run-elfstrmerge-test.sh b/tests/run-elfstrmerge-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-exprlocs-self.sh b/tests/run-exprlocs-self.sh old mode 100755 new mode 100644 diff --git a/tests/run-exprlocs.sh b/tests/run-exprlocs.sh old mode 100755 new mode 100644 diff --git a/tests/run-find-prologues.sh b/tests/run-find-prologues.sh old mode 100755 new mode 100644 diff --git a/tests/run-funcretval++11.sh b/tests/run-funcretval++11.sh new file mode 100644 index 0000000000000000000000000000000000000000..fcfefe1994832caadf2ec508856a48c6170e8a78 --- /dev/null +++ b/tests/run-funcretval++11.sh @@ -0,0 +1,21 @@ +#! /bin/sh +# Copyright (C) 2023 IBM Corporation +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +testrun $abs_builddir/funcretval -e $abs_builddir/funcretval_test++11 \ + > /dev/null diff --git a/tests/run-funcretval.sh b/tests/run-funcretval.sh old mode 100755 new mode 100644 diff --git a/tests/run-funcscopes.sh b/tests/run-funcscopes.sh old mode 100755 new mode 100644 diff --git a/tests/run-get-aranges.sh b/tests/run-get-aranges.sh old mode 100755 new mode 100644 diff --git a/tests/run-get-files.sh b/tests/run-get-files.sh old mode 100755 new mode 100644 diff --git a/tests/run-get-lines.sh b/tests/run-get-lines.sh old mode 100755 new mode 100644 diff --git a/tests/run-get-pubnames.sh b/tests/run-get-pubnames.sh old mode 100755 new mode 100644 diff --git a/tests/run-get-units-invalid.sh b/tests/run-get-units-invalid.sh old mode 100755 new mode 100644 diff --git a/tests/run-get-units-split.sh b/tests/run-get-units-split.sh old mode 100755 new mode 100644 diff --git a/tests/run-getphdrnum.sh b/tests/run-getphdrnum.sh old mode 100755 new mode 100644 diff --git a/tests/run-getsrc-die.sh b/tests/run-getsrc-die.sh old mode 100755 new mode 100644 diff --git a/tests/run-large-elf-file.sh b/tests/run-large-elf-file.sh old mode 100755 new mode 100644 diff --git a/tests/run-lfs-symbols.sh b/tests/run-lfs-symbols.sh old mode 100755 new mode 100644 index 762a5d96961af6f810911dcebdc1c40376da8e99..88c6270af7312db246e7fe4502dfa9b8825e378c --- a/tests/run-lfs-symbols.sh +++ b/tests/run-lfs-symbols.sh @@ -42,13 +42,13 @@ LFS_FORMAT='BEGIN { LFS=$(printf "$LFS_FORMAT" "${abs_srcdir}/lfs-symbols") makeprint() { - make print-$1 -C $2 |& awk -F= "/^$1=/{ print \$2 }" + make print-$1 -C $2 |& gawk -F= "/^$1=/{ print \$2 }" } testrun_lfs() { echo "checking $1" if [ -e "$1" ]; then - bad=$(testrun ${abs_top_builddir}/src/nm -u "$1" | awk "$LFS") + bad=$(testrun ${abs_top_builddir}/src/nm -u "$1" | gawk "$LFS") if [ -n "$bad" ]; then echo "$1 contains non-lfs symbols:" $bad exit_status=1 diff --git a/tests/run-line2addr.sh b/tests/run-line2addr.sh old mode 100755 new mode 100644 diff --git a/tests/run-linkmap-cut.sh b/tests/run-linkmap-cut.sh old mode 100755 new mode 100644 diff --git a/tests/run-low_high_pc-dw-form-indirect.sh b/tests/run-low_high_pc-dw-form-indirect.sh old mode 100755 new mode 100644 diff --git a/tests/run-low_high_pc.sh b/tests/run-low_high_pc.sh old mode 100755 new mode 100644 diff --git a/tests/run-macro-test.sh b/tests/run-macro-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-native-test.sh b/tests/run-native-test.sh old mode 100755 new mode 100644 index d19007f2ff04e173dd7b69db0499874ad59a6307..042a51c6c93aa5fbb6ae2798c7b422cda7d6a63e --- a/tests/run-native-test.sh +++ b/tests/run-native-test.sh @@ -27,7 +27,8 @@ # in all builds. tempfiles native.c native -echo 'main () { while (1) pause (); }' > native.c +printf '#include \nint main (void) { while (1) pause (); }\n' \ + > native.c native=0 kill_native() diff --git a/tests/run-next-cfi-self.sh b/tests/run-next-cfi-self.sh old mode 100755 new mode 100644 diff --git a/tests/run-next-cfi.sh b/tests/run-next-cfi.sh old mode 100755 new mode 100644 diff --git a/tests/run-next-files.sh b/tests/run-next-files.sh old mode 100755 new mode 100644 diff --git a/tests/run-next-lines.sh b/tests/run-next-lines.sh old mode 100755 new mode 100644 diff --git a/tests/run-nm-self.sh b/tests/run-nm-self.sh old mode 100755 new mode 100644 diff --git a/tests/run-nm-syms.sh b/tests/run-nm-syms.sh old mode 100755 new mode 100644 diff --git a/tests/run-nvidia-extended-linemap-libdw.sh b/tests/run-nvidia-extended-linemap-libdw.sh old mode 100755 new mode 100644 diff --git a/tests/run-nvidia-extended-linemap-readelf.sh b/tests/run-nvidia-extended-linemap-readelf.sh old mode 100755 new mode 100644 diff --git a/tests/run-peel-type.sh b/tests/run-peel-type.sh old mode 100755 new mode 100644 diff --git a/tests/run-prelink-addr-test.sh b/tests/run-prelink-addr-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-pt_gnu_prop-tests.sh b/tests/run-pt_gnu_prop-tests.sh old mode 100755 new mode 100644 diff --git a/tests/run-ranlib-test.sh b/tests/run-ranlib-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-ranlib-test2.sh b/tests/run-ranlib-test2.sh old mode 100755 new mode 100644 diff --git a/tests/run-ranlib-test3.sh b/tests/run-ranlib-test3.sh old mode 100755 new mode 100644 diff --git a/tests/run-ranlib-test4.sh b/tests/run-ranlib-test4.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-A.sh b/tests/run-readelf-A.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-Dd.sh b/tests/run-readelf-Dd.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-addr.sh b/tests/run-readelf-addr.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-aranges.sh b/tests/run-readelf-aranges.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-arm-flags.sh b/tests/run-readelf-arm-flags.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-compressed-zstd.sh b/tests/run-readelf-compressed-zstd.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-compressed.sh b/tests/run-readelf-compressed.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-const-values.sh b/tests/run-readelf-const-values.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-d.sh b/tests/run-readelf-d.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-discr.sh b/tests/run-readelf-discr.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-dw-form-indirect.sh b/tests/run-readelf-dw-form-indirect.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-dwz-multi.sh b/tests/run-readelf-dwz-multi.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-fat-lto.sh b/tests/run-readelf-fat-lto.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-frames.sh b/tests/run-readelf-frames.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-gdb_index.sh b/tests/run-readelf-gdb_index.sh old mode 100755 new mode 100644 index fcbc3c571d537585249935f56ffb658774525ad5..cd437f523ec6051fcacc62be0fee6b43bc6abd5d --- a/tests/run-readelf-gdb_index.sh +++ b/tests/run-readelf-gdb_index.sh @@ -63,7 +63,7 @@ # (gdb) save gdb-index . # objcopy --add-section .gdb_index=testfilegdbindex7.gdb-index --set-section-flags .gdb_index=readonly testfilegdbindex7 testfilegdbindex7 -testfiles testfilegdbindex5 testfilegdbindex7 +testfiles testfilegdbindex5 testfilegdbindex7 testfilegdbindex9 testfilegdbindex9-no-maininfo testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex5 <<\EOF @@ -127,4 +127,97 @@ GDB section [33] '.gdb_index' at offset 0xe76 contains 8399 bytes : [ 754] symbol: int, CUs: 0 (type:S) EOF +# testfilegdbindex9-no-maininfo is built the same way as testfilegdbindex7. +testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex9-no-maininfo <<\EOF + +GDB section [33] '.gdb_index' at offset 0x38e1 contains 8415 bytes : + Version: 9 + CU offset: 0x1c + TU offset: 0x3c + address offset: 0x54 + symbol offset: 0x7c + shortcut offset: 0x207c + constant offset: 0x2084 + + CU list at offset 0x1c contains 2 entries: + [ 0] start: 0x00004c, length: 220 + [ 1] start: 0x000128, length: 214 + + TU list at offset 0x3c contains 1 entries: + [ 0] CU offset: 0, type offset: 30, signature: 0x87e03f92cc37cdf0 + + Address list at offset 0x54 contains 2 entries: + [ 0] 0x0000000000401106
..0x000000000040113b , CU index: 1 + [ 1] 0x000000000040113c ..0x0000000000401173 , CU index: 2 + + Symbol table at offset 0x54 contains 1024 slots: + [ 123] symbol: global, CUs: 1 (var:G), 0T (var:G) + [ 489] symbol: main, CUs: 1 (func:G) + [ 518] symbol: char, CUs: 0 (type:S) + [ 661] symbol: foo, CUs: 0 (type:S) + [ 741] symbol: hello, CUs: 1 (var:S), 0T (func:S) + [ 746] symbol: say, CUs: 0T (func:G) + [ 754] symbol: int, CUs: 1 (type:S) + +Shortcut table at offset 0x207c contains 2 slots: +Language of main: ??? (0) +Name of main: +EOF + +# testfilegdbindex9.f90 +# +# program repro +# type small_stride +# character*40 long_string +# integer small_pad +# end type small_stride +# type(small_stride), dimension (20), target :: unpleasant +# character*40, pointer, dimension(:):: c40pt +# integer i +# do i = 0,19 +# unpleasant(i+1)%small_pad = i+1 +# unpleasant(i+1)%long_string = char (ichar('0') + i) +# end do +# c40pt => unpleasant%long_string +# print *, c40pt +#end program repro + +# gfortran -g -o testfilegdbindex9 testfilegdbindex9.f90 +# gdb-add-index testfilegdbindex9 + +testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex9 <<\EOF + +GDB section [35] '.gdb_index' at offset 0x37d9 contains 8395 bytes : + Version: 9 + CU offset: 0x1c + TU offset: 0x2c + address offset: 0x2c + symbol offset: 0x40 + shortcut offset: 0x2040 + constant offset: 0x2048 + + CU list at offset 0x1c contains 1 entries: + [ 0] start: 00000000, length: 307 + + TU list at offset 0x2c contains 0 entries: + + Address list at offset 0x2c contains 1 entries: + [ 0] 0x0000000000401166 ..0x00000000004013f0 , CU index: 0 + + Symbol table at offset 0x2c contains 1024 slots: + [ 61] symbol: small_stride, CUs: 0 (type:S) + [ 71] symbol: integer(kind=8), CUs: 0 (type:S) + [ 161] symbol: character(kind=1), CUs: 0 (type:S) + [ 397] symbol: unpleasant, CUs: 0 (var:S) + [ 489] symbol: main, CUs: 0 (func:G) + [ 827] symbol: integer(kind=4), CUs: 0 (type:S) + [ 858] symbol: c40pt, CUs: 0 (var:S) + [ 965] symbol: repro, CUs: 0 (func:S) + [1016] symbol: i, CUs: 0 (var:S) + +Shortcut table at offset 0x2040 contains 2 slots: +Language of main: Fortran08 +Name of main: repro +EOF + exit 0 diff --git a/tests/run-readelf-info-plus.sh b/tests/run-readelf-info-plus.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-line.sh b/tests/run-readelf-line.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-loc.sh b/tests/run-readelf-loc.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-macro.sh b/tests/run-readelf-macro.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-macros.sh b/tests/run-readelf-macros.sh deleted file mode 100755 index cc311b756e4da6fb9224be0b7414cf4e3a7b230c..0000000000000000000000000000000000000000 --- a/tests/run-readelf-macros.sh +++ /dev/null @@ -1,435 +0,0 @@ -#! /bin/sh -# Copyright (C) 2018 Red Hat, Inc. -# This file is part of elfutils. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# elfutils is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -. $srcdir/test-subr.sh - -# - testfile-macros-object.c -# -# #define SUCCESS 0 -# #define FAILURE 0 -# -# #include -# -# bool foo (int input) -# { -# return input == SUCCESS ? SUCCESS : FAILURE; -# } - -# gcc -g3 -gdwarf-5 -O2 -c testfile-macros-object.c - -testfiles testfile-macros-object.o - -testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=macro testfile-macros-object.o <<\EOF - -DWARF section [12] '.debug_macro' at offset 0x16f: - - Offset: 0x0 - Version: 5 - Flag: 0x2 (debug_line_offset) - Offset length: 4 - .debug_line offset: 0x0 - - #include offset 0x0 - start_file 0, [1] /home/mark/build/elfutils-obj/testfile-macros-object.c - start_file 31, [2] /usr/include/stdc-predef.h - #include offset 0x0 - end_file - #define SUCCESS 0, line 1 (indirect) - #define FAILURE 0, line 2 (indirect) - start_file 4, [3] /opt/rh/devtoolset-8/root/usr/lib/gcc/x86_64-redhat-linux/8/include/stdbool.h - #include offset 0x0 - end_file - end_file - - -DWARF section [14] '.debug_macro' at offset 0x19e: - - Offset: 0x0 - Version: 5 - Flag: 0x0 - Offset length: 4 - - #define __STDC__ 1, line 0 (indirect) - #define __STDC_VERSION__ 201710L, line 0 (indirect) - #define __STDC_UTF_16__ 1, line 0 (indirect) - #define __STDC_UTF_32__ 1, line 0 (indirect) - #define __STDC_HOSTED__ 1, line 0 (indirect) - #define __GNUC__ 8, line 0 (indirect) - #define __GNUC_MINOR__ 2, line 0 (indirect) - #define __GNUC_PATCHLEVEL__ 1, line 0 (indirect) - #define __VERSION__ "8.2.1 20180905 (Red Hat 8.2.1-3)", line 0 (indirect) - #define __GNUC_RH_RELEASE__ 3, line 0 (indirect) - #define __ATOMIC_RELAXED 0, line 0 (indirect) - #define __ATOMIC_SEQ_CST 5, line 0 (indirect) - #define __ATOMIC_ACQUIRE 2, line 0 (indirect) - #define __ATOMIC_RELEASE 3, line 0 (indirect) - #define __ATOMIC_ACQ_REL 4, line 0 (indirect) - #define __ATOMIC_CONSUME 1, line 0 (indirect) - #define __OPTIMIZE__ 1, line 0 (indirect) - #define __FINITE_MATH_ONLY__ 0, line 0 (indirect) - #define _LP64 1, line 0 (indirect) - #define __LP64__ 1, line 0 (indirect) - #define __SIZEOF_INT__ 4, line 0 (indirect) - #define __SIZEOF_LONG__ 8, line 0 (indirect) - #define __SIZEOF_LONG_LONG__ 8, line 0 (indirect) - #define __SIZEOF_SHORT__ 2, line 0 (indirect) - #define __SIZEOF_FLOAT__ 4, line 0 (indirect) - #define __SIZEOF_DOUBLE__ 8, line 0 (indirect) - #define __SIZEOF_LONG_DOUBLE__ 16, line 0 (indirect) - #define __SIZEOF_SIZE_T__ 8, line 0 (indirect) - #define __CHAR_BIT__ 8, line 0 (indirect) - #define __BIGGEST_ALIGNMENT__ 16, line 0 (indirect) - #define __ORDER_LITTLE_ENDIAN__ 1234, line 0 (indirect) - #define __ORDER_BIG_ENDIAN__ 4321, line 0 (indirect) - #define __ORDER_PDP_ENDIAN__ 3412, line 0 (indirect) - #define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__, line 0 (indirect) - #define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__, line 0 (indirect) - #define __SIZEOF_POINTER__ 8, line 0 (indirect) - #define __SIZE_TYPE__ long unsigned int, line 0 (indirect) - #define __PTRDIFF_TYPE__ long int, line 0 (indirect) - #define __WCHAR_TYPE__ int, line 0 (indirect) - #define __WINT_TYPE__ unsigned int, line 0 (indirect) - #define __INTMAX_TYPE__ long int, line 0 (indirect) - #define __UINTMAX_TYPE__ long unsigned int, line 0 (indirect) - #define __CHAR16_TYPE__ short unsigned int, line 0 (indirect) - #define __CHAR32_TYPE__ unsigned int, line 0 (indirect) - #define __SIG_ATOMIC_TYPE__ int, line 0 (indirect) - #define __INT8_TYPE__ signed char, line 0 (indirect) - #define __INT16_TYPE__ short int, line 0 (indirect) - #define __INT32_TYPE__ int, line 0 (indirect) - #define __INT64_TYPE__ long int, line 0 (indirect) - #define __UINT8_TYPE__ unsigned char, line 0 (indirect) - #define __UINT16_TYPE__ short unsigned int, line 0 (indirect) - #define __UINT32_TYPE__ unsigned int, line 0 (indirect) - #define __UINT64_TYPE__ long unsigned int, line 0 (indirect) - #define __INT_LEAST8_TYPE__ signed char, line 0 (indirect) - #define __INT_LEAST16_TYPE__ short int, line 0 (indirect) - #define __INT_LEAST32_TYPE__ int, line 0 (indirect) - #define __INT_LEAST64_TYPE__ long int, line 0 (indirect) - #define __UINT_LEAST8_TYPE__ unsigned char, line 0 (indirect) - #define __UINT_LEAST16_TYPE__ short unsigned int, line 0 (indirect) - #define __UINT_LEAST32_TYPE__ unsigned int, line 0 (indirect) - #define __UINT_LEAST64_TYPE__ long unsigned int, line 0 (indirect) - #define __INT_FAST8_TYPE__ signed char, line 0 (indirect) - #define __INT_FAST16_TYPE__ long int, line 0 (indirect) - #define __INT_FAST32_TYPE__ long int, line 0 (indirect) - #define __INT_FAST64_TYPE__ long int, line 0 (indirect) - #define __UINT_FAST8_TYPE__ unsigned char, line 0 (indirect) - #define __UINT_FAST16_TYPE__ long unsigned int, line 0 (indirect) - #define __UINT_FAST32_TYPE__ long unsigned int, line 0 (indirect) - #define __UINT_FAST64_TYPE__ long unsigned int, line 0 (indirect) - #define __INTPTR_TYPE__ long int, line 0 (indirect) - #define __UINTPTR_TYPE__ long unsigned int, line 0 (indirect) - #define __has_include(STR) __has_include__(STR), line 0 (indirect) - #define __has_include_next(STR) __has_include_next__(STR), line 0 (indirect) - #define __GXX_ABI_VERSION 1013, line 0 (indirect) - #define __SCHAR_MAX__ 0x7f, line 0 (indirect) - #define __SHRT_MAX__ 0x7fff, line 0 (indirect) - #define __INT_MAX__ 0x7fffffff, line 0 (indirect) - #define __LONG_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __LONG_LONG_MAX__ 0x7fffffffffffffffLL, line 0 (indirect) - #define __WCHAR_MAX__ 0x7fffffff, line 0 (indirect) - #define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1), line 0 (indirect) - #define __WINT_MAX__ 0xffffffffU, line 0 (indirect) - #define __WINT_MIN__ 0U, line 0 (indirect) - #define __PTRDIFF_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __SIZE_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __SCHAR_WIDTH__ 8, line 0 (indirect) - #define __SHRT_WIDTH__ 16, line 0 (indirect) - #define __INT_WIDTH__ 32, line 0 (indirect) - #define __LONG_WIDTH__ 64, line 0 (indirect) - #define __LONG_LONG_WIDTH__ 64, line 0 (indirect) - #define __WCHAR_WIDTH__ 32, line 0 (indirect) - #define __WINT_WIDTH__ 32, line 0 (indirect) - #define __PTRDIFF_WIDTH__ 64, line 0 (indirect) - #define __SIZE_WIDTH__ 64, line 0 (indirect) - #define __INTMAX_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __INTMAX_C(c) c ## L, line 0 (indirect) - #define __UINTMAX_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __UINTMAX_C(c) c ## UL, line 0 (indirect) - #define __INTMAX_WIDTH__ 64, line 0 (indirect) - #define __SIG_ATOMIC_MAX__ 0x7fffffff, line 0 (indirect) - #define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1), line 0 (indirect) - #define __SIG_ATOMIC_WIDTH__ 32, line 0 (indirect) - #define __INT8_MAX__ 0x7f, line 0 (indirect) - #define __INT16_MAX__ 0x7fff, line 0 (indirect) - #define __INT32_MAX__ 0x7fffffff, line 0 (indirect) - #define __INT64_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __UINT8_MAX__ 0xff, line 0 (indirect) - #define __UINT16_MAX__ 0xffff, line 0 (indirect) - #define __UINT32_MAX__ 0xffffffffU, line 0 (indirect) - #define __UINT64_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __INT_LEAST8_MAX__ 0x7f, line 0 (indirect) - #define __INT8_C(c) c, line 0 (indirect) - #define __INT_LEAST8_WIDTH__ 8, line 0 (indirect) - #define __INT_LEAST16_MAX__ 0x7fff, line 0 (indirect) - #define __INT16_C(c) c, line 0 (indirect) - #define __INT_LEAST16_WIDTH__ 16, line 0 (indirect) - #define __INT_LEAST32_MAX__ 0x7fffffff, line 0 (indirect) - #define __INT32_C(c) c, line 0 (indirect) - #define __INT_LEAST32_WIDTH__ 32, line 0 (indirect) - #define __INT_LEAST64_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __INT64_C(c) c ## L, line 0 (indirect) - #define __INT_LEAST64_WIDTH__ 64, line 0 (indirect) - #define __UINT_LEAST8_MAX__ 0xff, line 0 (indirect) - #define __UINT8_C(c) c, line 0 (indirect) - #define __UINT_LEAST16_MAX__ 0xffff, line 0 (indirect) - #define __UINT16_C(c) c, line 0 (indirect) - #define __UINT_LEAST32_MAX__ 0xffffffffU, line 0 (indirect) - #define __UINT32_C(c) c ## U, line 0 (indirect) - #define __UINT_LEAST64_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __UINT64_C(c) c ## UL, line 0 (indirect) - #define __INT_FAST8_MAX__ 0x7f, line 0 (indirect) - #define __INT_FAST8_WIDTH__ 8, line 0 (indirect) - #define __INT_FAST16_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __INT_FAST16_WIDTH__ 64, line 0 (indirect) - #define __INT_FAST32_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __INT_FAST32_WIDTH__ 64, line 0 (indirect) - #define __INT_FAST64_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __INT_FAST64_WIDTH__ 64, line 0 (indirect) - #define __UINT_FAST8_MAX__ 0xff, line 0 (indirect) - #define __UINT_FAST16_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __UINT_FAST32_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __UINT_FAST64_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __INTPTR_MAX__ 0x7fffffffffffffffL, line 0 (indirect) - #define __INTPTR_WIDTH__ 64, line 0 (indirect) - #define __UINTPTR_MAX__ 0xffffffffffffffffUL, line 0 (indirect) - #define __GCC_IEC_559 2, line 0 (indirect) - #define __GCC_IEC_559_COMPLEX 2, line 0 (indirect) - #define __FLT_EVAL_METHOD__ 0, line 0 (indirect) - #define __FLT_EVAL_METHOD_TS_18661_3__ 0, line 0 (indirect) - #define __DEC_EVAL_METHOD__ 2, line 0 (indirect) - #define __FLT_RADIX__ 2, line 0 (indirect) - #define __FLT_MANT_DIG__ 24, line 0 (indirect) - #define __FLT_DIG__ 6, line 0 (indirect) - #define __FLT_MIN_EXP__ (-125), line 0 (indirect) - #define __FLT_MIN_10_EXP__ (-37), line 0 (indirect) - #define __FLT_MAX_EXP__ 128, line 0 (indirect) - #define __FLT_MAX_10_EXP__ 38, line 0 (indirect) - #define __FLT_DECIMAL_DIG__ 9, line 0 (indirect) - #define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F, line 0 (indirect) - #define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F, line 0 (indirect) - #define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F, line 0 (indirect) - #define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F, line 0 (indirect) - #define __FLT_HAS_DENORM__ 1, line 0 (indirect) - #define __FLT_HAS_INFINITY__ 1, line 0 (indirect) - #define __FLT_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __DBL_MANT_DIG__ 53, line 0 (indirect) - #define __DBL_DIG__ 15, line 0 (indirect) - #define __DBL_MIN_EXP__ (-1021), line 0 (indirect) - #define __DBL_MIN_10_EXP__ (-307), line 0 (indirect) - #define __DBL_MAX_EXP__ 1024, line 0 (indirect) - #define __DBL_MAX_10_EXP__ 308, line 0 (indirect) - #define __DBL_DECIMAL_DIG__ 17, line 0 (indirect) - #define __DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L), line 0 (indirect) - #define __DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L), line 0 (indirect) - #define __DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L), line 0 (indirect) - #define __DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L), line 0 (indirect) - #define __DBL_HAS_DENORM__ 1, line 0 (indirect) - #define __DBL_HAS_INFINITY__ 1, line 0 (indirect) - #define __DBL_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __LDBL_MANT_DIG__ 64, line 0 (indirect) - #define __LDBL_DIG__ 18, line 0 (indirect) - #define __LDBL_MIN_EXP__ (-16381), line 0 (indirect) - #define __LDBL_MIN_10_EXP__ (-4931), line 0 (indirect) - #define __LDBL_MAX_EXP__ 16384, line 0 (indirect) - #define __LDBL_MAX_10_EXP__ 4932, line 0 (indirect) - #define __DECIMAL_DIG__ 21, line 0 (indirect) - #define __LDBL_DECIMAL_DIG__ 21, line 0 (indirect) - #define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L, line 0 (indirect) - #define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L, line 0 (indirect) - #define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L, line 0 (indirect) - #define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L, line 0 (indirect) - #define __LDBL_HAS_DENORM__ 1, line 0 (indirect) - #define __LDBL_HAS_INFINITY__ 1, line 0 (indirect) - #define __LDBL_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __FLT32_MANT_DIG__ 24, line 0 (indirect) - #define __FLT32_DIG__ 6, line 0 (indirect) - #define __FLT32_MIN_EXP__ (-125), line 0 (indirect) - #define __FLT32_MIN_10_EXP__ (-37), line 0 (indirect) - #define __FLT32_MAX_EXP__ 128, line 0 (indirect) - #define __FLT32_MAX_10_EXP__ 38, line 0 (indirect) - #define __FLT32_DECIMAL_DIG__ 9, line 0 (indirect) - #define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32, line 0 (indirect) - #define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32, line 0 (indirect) - #define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32, line 0 (indirect) - #define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32, line 0 (indirect) - #define __FLT32_HAS_DENORM__ 1, line 0 (indirect) - #define __FLT32_HAS_INFINITY__ 1, line 0 (indirect) - #define __FLT32_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __FLT64_MANT_DIG__ 53, line 0 (indirect) - #define __FLT64_DIG__ 15, line 0 (indirect) - #define __FLT64_MIN_EXP__ (-1021), line 0 (indirect) - #define __FLT64_MIN_10_EXP__ (-307), line 0 (indirect) - #define __FLT64_MAX_EXP__ 1024, line 0 (indirect) - #define __FLT64_MAX_10_EXP__ 308, line 0 (indirect) - #define __FLT64_DECIMAL_DIG__ 17, line 0 (indirect) - #define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64, line 0 (indirect) - #define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64, line 0 (indirect) - #define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64, line 0 (indirect) - #define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64, line 0 (indirect) - #define __FLT64_HAS_DENORM__ 1, line 0 (indirect) - #define __FLT64_HAS_INFINITY__ 1, line 0 (indirect) - #define __FLT64_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __FLT128_MANT_DIG__ 113, line 0 (indirect) - #define __FLT128_DIG__ 33, line 0 (indirect) - #define __FLT128_MIN_EXP__ (-16381), line 0 (indirect) - #define __FLT128_MIN_10_EXP__ (-4931), line 0 (indirect) - #define __FLT128_MAX_EXP__ 16384, line 0 (indirect) - #define __FLT128_MAX_10_EXP__ 4932, line 0 (indirect) - #define __FLT128_DECIMAL_DIG__ 36, line 0 (indirect) - #define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128, line 0 (indirect) - #define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128, line 0 (indirect) - #define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128, line 0 (indirect) - #define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128, line 0 (indirect) - #define __FLT128_HAS_DENORM__ 1, line 0 (indirect) - #define __FLT128_HAS_INFINITY__ 1, line 0 (indirect) - #define __FLT128_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __FLT32X_MANT_DIG__ 53, line 0 (indirect) - #define __FLT32X_DIG__ 15, line 0 (indirect) - #define __FLT32X_MIN_EXP__ (-1021), line 0 (indirect) - #define __FLT32X_MIN_10_EXP__ (-307), line 0 (indirect) - #define __FLT32X_MAX_EXP__ 1024, line 0 (indirect) - #define __FLT32X_MAX_10_EXP__ 308, line 0 (indirect) - #define __FLT32X_DECIMAL_DIG__ 17, line 0 (indirect) - #define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x, line 0 (indirect) - #define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x, line 0 (indirect) - #define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x, line 0 (indirect) - #define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x, line 0 (indirect) - #define __FLT32X_HAS_DENORM__ 1, line 0 (indirect) - #define __FLT32X_HAS_INFINITY__ 1, line 0 (indirect) - #define __FLT32X_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __FLT64X_MANT_DIG__ 64, line 0 (indirect) - #define __FLT64X_DIG__ 18, line 0 (indirect) - #define __FLT64X_MIN_EXP__ (-16381), line 0 (indirect) - #define __FLT64X_MIN_10_EXP__ (-4931), line 0 (indirect) - #define __FLT64X_MAX_EXP__ 16384, line 0 (indirect) - #define __FLT64X_MAX_10_EXP__ 4932, line 0 (indirect) - #define __FLT64X_DECIMAL_DIG__ 21, line 0 (indirect) - #define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x, line 0 (indirect) - #define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x, line 0 (indirect) - #define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x, line 0 (indirect) - #define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x, line 0 (indirect) - #define __FLT64X_HAS_DENORM__ 1, line 0 (indirect) - #define __FLT64X_HAS_INFINITY__ 1, line 0 (indirect) - #define __FLT64X_HAS_QUIET_NAN__ 1, line 0 (indirect) - #define __DEC32_MANT_DIG__ 7, line 0 (indirect) - #define __DEC32_MIN_EXP__ (-94), line 0 (indirect) - #define __DEC32_MAX_EXP__ 97, line 0 (indirect) - #define __DEC32_MIN__ 1E-95DF, line 0 (indirect) - #define __DEC32_MAX__ 9.999999E96DF, line 0 (indirect) - #define __DEC32_EPSILON__ 1E-6DF, line 0 (indirect) - #define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF, line 0 (indirect) - #define __DEC64_MANT_DIG__ 16, line 0 (indirect) - #define __DEC64_MIN_EXP__ (-382), line 0 (indirect) - #define __DEC64_MAX_EXP__ 385, line 0 (indirect) - #define __DEC64_MIN__ 1E-383DD, line 0 (indirect) - #define __DEC64_MAX__ 9.999999999999999E384DD, line 0 (indirect) - #define __DEC64_EPSILON__ 1E-15DD, line 0 (indirect) - #define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD, line 0 (indirect) - #define __DEC128_MANT_DIG__ 34, line 0 (indirect) - #define __DEC128_MIN_EXP__ (-6142), line 0 (indirect) - #define __DEC128_MAX_EXP__ 6145, line 0 (indirect) - #define __DEC128_MIN__ 1E-6143DL, line 0 (indirect) - #define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL, line 0 (indirect) - #define __DEC128_EPSILON__ 1E-33DL, line 0 (indirect) - #define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL, line 0 (indirect) - #define __REGISTER_PREFIX__ , line 0 (indirect) - #define __USER_LABEL_PREFIX__ , line 0 (indirect) - #define __GNUC_STDC_INLINE__ 1, line 0 (indirect) - #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1, line 0 (indirect) - #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1, line 0 (indirect) - #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1, line 0 (indirect) - #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1, line 0 (indirect) - #define __GCC_ATOMIC_BOOL_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_CHAR_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_SHORT_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_INT_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_LONG_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_LLONG_LOCK_FREE 2, line 0 (indirect) - #define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1, line 0 (indirect) - #define __GCC_ATOMIC_POINTER_LOCK_FREE 2, line 0 (indirect) - #define __GCC_HAVE_DWARF2_CFI_ASM 1, line 0 (indirect) - #define __PRAGMA_REDEFINE_EXTNAME 1, line 0 (indirect) - #define __SIZEOF_INT128__ 16, line 0 (indirect) - #define __SIZEOF_WCHAR_T__ 4, line 0 (indirect) - #define __SIZEOF_WINT_T__ 4, line 0 (indirect) - #define __SIZEOF_PTRDIFF_T__ 8, line 0 (indirect) - #define __amd64 1, line 0 (indirect) - #define __amd64__ 1, line 0 (indirect) - #define __x86_64 1, line 0 (indirect) - #define __x86_64__ 1, line 0 (indirect) - #define __SIZEOF_FLOAT80__ 16, line 0 (indirect) - #define __SIZEOF_FLOAT128__ 16, line 0 (indirect) - #define __ATOMIC_HLE_ACQUIRE 65536, line 0 (indirect) - #define __ATOMIC_HLE_RELEASE 131072, line 0 (indirect) - #define __GCC_ASM_FLAG_OUTPUTS__ 1, line 0 (indirect) - #define __k8 1, line 0 (indirect) - #define __k8__ 1, line 0 (indirect) - #define __code_model_small__ 1, line 0 (indirect) - #define __MMX__ 1, line 0 (indirect) - #define __SSE__ 1, line 0 (indirect) - #define __SSE2__ 1, line 0 (indirect) - #define __FXSR__ 1, line 0 (indirect) - #define __SSE_MATH__ 1, line 0 (indirect) - #define __SSE2_MATH__ 1, line 0 (indirect) - #define __SEG_FS 1, line 0 (indirect) - #define __SEG_GS 1, line 0 (indirect) - #define __gnu_linux__ 1, line 0 (indirect) - #define __linux 1, line 0 (indirect) - #define __linux__ 1, line 0 (indirect) - #define linux 1, line 0 (indirect) - #define __unix 1, line 0 (indirect) - #define __unix__ 1, line 0 (indirect) - #define unix 1, line 0 (indirect) - #define __ELF__ 1, line 0 (indirect) - #define __DECIMAL_BID_FORMAT__ 1, line 0 (indirect) - - -DWARF section [16] '.debug_macro' at offset 0x98e: - - Offset: 0x0 - Version: 5 - Flag: 0x0 - Offset length: 4 - - #define _STDC_PREDEF_H 1, line 19 (indirect) - #define __STDC_IEC_559__ 1, line 30 (indirect) - #define __STDC_IEC_559_COMPLEX__ 1, line 31 (indirect) - #define __STDC_ISO_10646__ 201103L, line 35 (indirect) - #define __STDC_NO_THREADS__ 1, line 38 (indirect) - - -DWARF section [18] '.debug_macro' at offset 0x9b0: - - Offset: 0x0 - Version: 5 - Flag: 0x0 - Offset length: 4 - - #define _STDBOOL_H , line 29 (indirect) - #define bool _Bool, line 33 (indirect) - #define true 1, line 34 (indirect) - #define false 0, line 35 (indirect) - #define __bool_true_false_are_defined 1, line 52 (indirect) - -EOF - -exit 0 diff --git a/tests/run-readelf-mixed-corenote.sh b/tests/run-readelf-mixed-corenote.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-multi-noline.sh b/tests/run-readelf-multi-noline.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-n.sh b/tests/run-readelf-n.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-ranges.sh b/tests/run-readelf-ranges.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-s.sh b/tests/run-readelf-s.sh old mode 100755 new mode 100644 index ee1c0e8278a97371df3ef1159aaa85207b328b6e..6b218f109bb8ff7299a49ec9662b00e33b6aa2f6 --- a/tests/run-readelf-s.sh +++ b/tests/run-readelf-s.sh @@ -395,4 +395,7 @@ Symbol table [27] '.symtab' contains 42 entries: 41: 00000000004003a8 0 FUNC GLOBAL DEFAULT 11 _init EOF +testrun ${abs_top_builddir}/src/readelf --elf-section -sW testfilebaxmin 2>&1 \ + | grep "WARNING: cannot find section: 'W'" >/dev/null || exit 2 + exit 0 diff --git a/tests/run-readelf-self.sh b/tests/run-readelf-self.sh old mode 100755 new mode 100644 index 7ffb357798a7661f964eb806be0fb0e3aa94fcec..de528d5eadd8fc6f4759b8cd59fa82acdbfb484a --- a/tests/run-readelf-self.sh +++ b/tests/run-readelf-self.sh @@ -17,5 +17,10 @@ . $srcdir/test-subr.sh +if test -n "$ELFUTILS_MEMORY_SANITIZER"; then + echo "binaries linked with memory sanitizer are too big" + exit 77 +fi + # Just makes sure readelf doesn't crash -testrun_on_self_quiet ${abs_top_builddir}/src/readelf -a -w +testrun_on_self_quiet ${abs_top_builddir}/src/readelf -N -a -w diff --git a/tests/run-readelf-str.sh b/tests/run-readelf-str.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-test1.sh b/tests/run-readelf-test1.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-test2.sh b/tests/run-readelf-test2.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-test3.sh b/tests/run-readelf-test3.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-test4.sh b/tests/run-readelf-test4.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-twofiles.sh b/tests/run-readelf-twofiles.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-types.sh b/tests/run-readelf-types.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-variant.sh b/tests/run-readelf-variant.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-vmcoreinfo.sh b/tests/run-readelf-vmcoreinfo.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-z.sh b/tests/run-readelf-z.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-zdebug-rel.sh b/tests/run-readelf-zdebug-rel.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-zdebug.sh b/tests/run-readelf-zdebug.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-zp.sh b/tests/run-readelf-zp.sh old mode 100755 new mode 100644 diff --git a/tests/run-readelf-zx.sh b/tests/run-readelf-zx.sh old mode 100755 new mode 100644 diff --git a/tests/run-reloc-bpf.sh b/tests/run-reloc-bpf.sh old mode 100755 new mode 100644 diff --git a/tests/run-rerequest_tag.sh b/tests/run-rerequest_tag.sh old mode 100755 new mode 100644 diff --git a/tests/run-retain.sh b/tests/run-retain.sh old mode 100755 new mode 100644 diff --git a/tests/run-reverse-sections-self.sh b/tests/run-reverse-sections-self.sh old mode 100755 new mode 100644 diff --git a/tests/run-reverse-sections.sh b/tests/run-reverse-sections.sh old mode 100755 new mode 100644 diff --git a/tests/run-show-abbrev.sh b/tests/run-show-abbrev.sh old mode 100755 new mode 100644 diff --git a/tests/run-show-die-info.sh b/tests/run-show-die-info.sh old mode 100755 new mode 100644 diff --git a/tests/run-srcfiles-self.sh b/tests/run-srcfiles-self.sh new file mode 100644 index 0000000000000000000000000000000000000000..0e64dd2b6456bb1872299d2462e9aafbcada6688 --- /dev/null +++ b/tests/run-srcfiles-self.sh @@ -0,0 +1,48 @@ +#! /bin/sh +# Copyright (C) 2023 Red Hat, Inc. +# This file is part of elfutils. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# elfutils is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +. $srcdir/test-subr.sh + +# Test different command line combinations on the srcfiles binary itself. +ET_EXEC="${abs_top_builddir}/src/srcfiles" +ET_PID=$$ + +SRC_NAME="srcfiles.cxx" + +# Ensure the output contains the expected source file srcfiles.cxx +testrun $ET_EXEC -e $ET_EXEC | grep $SRC_NAME > /dev/null + +for null_arg in --null ""; do + for verbose_arg in --verbose ""; do + testrun $ET_EXEC $null_arg $verbose_arg -p $ET_PID > /dev/null + + # Ensure that the output contains srclines.cxx + cu_only=$(testrun $ET_EXEC $null_arg $verbose_arg -c -e $ET_EXEC) + default=$(testrun $ET_EXEC $null_arg $verbose_arg -e $ET_EXEC) + result1=$(echo "$cu_only" | grep "$SRC_NAME") + result2=$(echo "$default" | grep "$SRC_NAME") + + if [ -z "$result1" ] || [ -z "$result2" ]; then + exit 1 + fi + + # Ensure that the output with the cu-only option contains less source files + if [ $(echo "$cu_only" | wc -m) -gt $(echo "$default" | wc -m) ]; then + exit 1 + fi + done +done diff --git a/tests/run-stack-d-test.sh b/tests/run-stack-d-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-stack-demangled-test.sh b/tests/run-stack-demangled-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-stack-i-test.sh b/tests/run-stack-i-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-strings-test.sh b/tests/run-strings-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-g.sh b/tests/run-strip-g.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-groups.sh b/tests/run-strip-groups.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-largealign.sh b/tests/run-strip-largealign.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-nobitsalign.sh b/tests/run-strip-nobitsalign.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-nothing.sh b/tests/run-strip-nothing.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-reloc-ko.sh b/tests/run-strip-reloc-ko.sh new file mode 100644 index 0000000000000000000000000000000000000000..55fa74dbe10dd8cc86c91123a8b3961d8251ee2c --- /dev/null +++ b/tests/run-strip-reloc-ko.sh @@ -0,0 +1,51 @@ +#! /bin/sh + +. $srcdir/strip-reloc-subr.sh + +testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko \ + hello_aarch64.ko hello_m68k.ko hello_riscv64.ko hello_csky.ko \ + hello_arc_hs4.ko + +# Most simple hello world kernel module for various architectures. +# Make sure that it contains debuginfo with CONFIG_DEBUG_INFO=y. +# :::::::::::::: +# Makefile +# :::::::::::::: +# obj-m := hello.o +# hello-y := init.o exit.o +# +# all: +# make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \ +# CONFIG_DEBUG_INFO=y modules +# :::::::::::::: +# init.c +# :::::::::::::: +# #include +# #include +# +# int init_module(void) +# { +# printk(KERN_INFO "Hello, world!\n"); +# return 0; +# } +# :::::::::::::: +# exit.c +# :::::::::::::: +# #include +# #include +# +# void cleanup_module() +# { +# printk(KERN_INFO "Goodbye, World!\n"); +# } +runtest hello_i386.ko 1 +runtest hello_x86_64.ko 1 +runtest hello_ppc64.ko 1 +runtest hello_s390.ko 1 +runtest hello_aarch64.ko 1 +runtest hello_m68k.ko 1 +runtest hello_riscv64.ko 1 +runtest hello_csky.ko 1 +runtest hello_arc_hs4.ko 1 + +exit $runtest_status diff --git a/tests/run-strip-reloc-ppc64.sh b/tests/run-strip-reloc-ppc64.sh new file mode 100644 index 0000000000000000000000000000000000000000..239c34d9c55ac750504a83a9025c43b1c9dce280 --- /dev/null +++ b/tests/run-strip-reloc-ppc64.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +. $srcdir/strip-reloc-subr.sh + +# See run-readelf-zdebug-rel.sh +testfiles testfile-debug-rel-ppc64.o +runtest testfile-debug-rel-ppc64.o 1 + +testfiles testfile-debug-rel-ppc64-z.o +runtest testfile-debug-rel-ppc64-z.o 1 + +testfiles testfile-debug-rel-ppc64-g.o +runtest testfile-debug-rel-ppc64-g.o 1 + +exit $runtest_status diff --git a/tests/run-strip-reloc-self.sh b/tests/run-strip-reloc-self.sh new file mode 100644 index 0000000000000000000000000000000000000000..68ed4cc2702bacb67d4d72186ed194bf5ce0b7bb --- /dev/null +++ b/tests/run-strip-reloc-self.sh @@ -0,0 +1,20 @@ +#! /bin/sh + +. $srcdir/strip-reloc-subr.sh + +# self test, shouldn't impact non-ET_REL files at all. +runtest ${abs_top_builddir}/src/strip 0 +runtest ${abs_top_builddir}/src/strip.o 1 + +# Copy ET_REL file for self-test and make sure to run with/without +# elf section compression. +tempfiles strip-uncompressed.o strip-compressed.o +testrun ${abs_top_builddir}/src/elfcompress -o strip-uncompressed.o -t none \ + ${abs_top_builddir}/src/strip.o +testrun ${abs_top_builddir}/src/elfcompress -o strip-compressed.o -t zlib \ + --force ${abs_top_builddir}/src/strip.o + +runtest strip-uncompressed.o 1 +runtest strip-compressed.o 1 + +exit $runtest_status diff --git a/tests/run-strip-remove-keep.sh b/tests/run-strip-remove-keep.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-strmerge.sh b/tests/run-strip-strmerge.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test-many.sh b/tests/run-strip-test-many.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test.sh b/tests/run-strip-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test10.sh b/tests/run-strip-test10.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test11.sh b/tests/run-strip-test11.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test12.sh b/tests/run-strip-test12.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test2.sh b/tests/run-strip-test2.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test3.sh b/tests/run-strip-test3.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test4.sh b/tests/run-strip-test4.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test5.sh b/tests/run-strip-test5.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test6.sh b/tests/run-strip-test6.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test7.sh b/tests/run-strip-test7.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test8.sh b/tests/run-strip-test8.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-test9.sh b/tests/run-strip-test9.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-version.sh b/tests/run-strip-version.sh old mode 100755 new mode 100644 diff --git a/tests/run-strptr.sh b/tests/run-strptr.sh old mode 100755 new mode 100644 diff --git a/tests/run-test-archive64.sh b/tests/run-test-archive64.sh old mode 100755 new mode 100644 diff --git a/tests/run-test-flag-nobits.sh b/tests/run-test-flag-nobits.sh old mode 100755 new mode 100644 diff --git a/tests/run-test-includes.sh b/tests/run-test-includes.sh old mode 100755 new mode 100644 diff --git a/tests/run-typeiter-many.sh b/tests/run-typeiter-many.sh old mode 100755 new mode 100644 diff --git a/tests/run-typeiter.sh b/tests/run-typeiter.sh old mode 100755 new mode 100644 diff --git a/tests/run-unit-info.sh b/tests/run-unit-info.sh old mode 100755 new mode 100644 diff --git a/tests/run-unstrip-M.sh b/tests/run-unstrip-M.sh old mode 100755 new mode 100644 diff --git a/tests/run-unstrip-n.sh b/tests/run-unstrip-n.sh old mode 100755 new mode 100644 diff --git a/tests/run-unstrip-test.sh b/tests/run-unstrip-test.sh old mode 100755 new mode 100644 diff --git a/tests/run-unstrip-test2.sh b/tests/run-unstrip-test2.sh old mode 100755 new mode 100644 diff --git a/tests/run-unstrip-test3.sh b/tests/run-unstrip-test3.sh old mode 100755 new mode 100644 diff --git a/tests/run-unstrip-test4.sh b/tests/run-unstrip-test4.sh old mode 100755 new mode 100644 diff --git a/tests/run-varlocs-self.sh b/tests/run-varlocs-self.sh old mode 100755 new mode 100644 index 5454fc7014afb407bed4ad582d1695b79ebe6da1..760fe4d7eda3c5c8adadfd42df0411ece2bba65f --- a/tests/run-varlocs-self.sh +++ b/tests/run-varlocs-self.sh @@ -17,6 +17,11 @@ . $srcdir/test-subr.sh +if test -n "$ELFUTILS_MEMORY_SANITIZER"; then + echo "binaries linked with memory sanitizer are too big" + exit 77 +fi + # Make sure varlocs doesn't crash, doesn't trigger self-check/asserts # or leaks running under valgrind. testrun_on_self_exe ${abs_top_builddir}/tests/varlocs -e diff --git a/tests/run-varlocs-vars.sh b/tests/run-varlocs-vars.sh old mode 100755 new mode 100644 diff --git a/tests/run-varlocs.sh b/tests/run-varlocs.sh old mode 100755 new mode 100644 index b26217760b376bcaa0a70d3232fe2cd8d25e119a..cbbcf6c7b87f015f39dbad079c44c1a72ac0070b --- a/tests/run-varlocs.sh +++ b/tests/run-varlocs.sh @@ -206,7 +206,7 @@ testfiles testfilesplitranges5.debug testfiles testfile-ranges-hello5.dwo testfile-ranges-world5.dwo testrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfilesplitranges5.debug <<\EOF module 'testfilesplitranges5.debug' -[14] CU 'hello.c' +[14] CU 'hello.c'@0 [1d] function 'no_say'@401160 frame_base: {call_frame_cfa {...}} [33] parameter 'prefix' @@ -236,7 +236,7 @@ module 'testfilesplitranges5.debug' [111] parameter 'count' [401150,401160) {reg4} module 'testfilesplitranges5.debug' -[14] CU 'world.c' +[14] CU 'world.c'@401180 [1d] function 'no_main'@4011d0 frame_base: {call_frame_cfa {...}} [35] parameter 'argc' @@ -282,7 +282,7 @@ testfiles testfilesplitranges4.debug testfiles testfile-ranges-hello.dwo testfile-ranges-world.dwo testrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfilesplitranges4.debug <<\EOF module 'testfilesplitranges4.debug' -[b] CU 'hello.c' +[b] CU 'hello.c'@0 [18] function 'no_say'@4004f0 frame_base: {call_frame_cfa {...}} [2f] parameter 'prefix' @@ -310,7 +310,7 @@ module 'testfilesplitranges4.debug' [102] parameter 'count' [4004e0,4004f0) {reg4} module 'testfilesplitranges4.debug' -[b] CU 'world.c' +[b] CU 'world.c'@400500 [18] function 'no_main'@400550 frame_base: {call_frame_cfa {...}} [2f] parameter 'argc' @@ -373,7 +373,7 @@ EOF testfiles testfile-addrx_constx-5 addrx_constx-5.dwo testrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-addrx_constx-5 <<\EOF module 'testfile-addrx_constx-5' -[14] CU 'addrx_constx.c' +[14] CU 'addrx_constx.c'@0 producer (strx) language (data1) name (strx) @@ -467,7 +467,7 @@ EOF testfiles testfile-addrx_constx-4 addrx_constx-4.dwo testrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-addrx_constx-4 <<\EOF module 'testfile-addrx_constx-4' -[b] CU 'addrx_constx.c' +[b] CU 'addrx_constx.c'@0 producer (GNU_str_index) language (data1) name (GNU_str_index) @@ -565,7 +565,7 @@ testfiles splitdwarf4-not-split4.dwo testrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfile-splitdwarf4-not-split4.debug <<\EOF module 'testfile-splitdwarf4-not-split4.debug' -[b] CU 'splitdwarf4-not-split4.c' +[b] CU 'splitdwarf4-not-split4.c'@0 [18] function 'main'@401050 frame_base: {call_frame_cfa {...}} [30] parameter 'argc' diff --git a/tests/run-xlate-note.sh b/tests/run-xlate-note.sh old mode 100755 new mode 100644 diff --git a/tests/run-zstrptr.sh b/tests/run-zstrptr.sh old mode 100755 new mode 100644 diff --git a/tests/run-strip-reloc.sh b/tests/strip-reloc-subr.sh old mode 100755 new mode 100644 similarity index 42% rename from tests/run-strip-reloc.sh rename to tests/strip-reloc-subr.sh index b7ec1420328cdea0fd84f01328c5d47dd671d7b3..c4d55ced1596ae9f9076646228369052302254cb --- a/tests/run-strip-reloc.sh +++ b/tests/strip-reloc-subr.sh @@ -17,13 +17,15 @@ . $srcdir/test-subr.sh -testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko \ - hello_aarch64.ko hello_m68k.ko hello_riscv64.ko hello_csky.ko +if test -n "$ELFUTILS_MEMORY_SANITIZER"; then + echo "binaries linked with memory sanitizer are too big" + exit 77 +fi -tempfiles readelf.out readelf.out1 readelf.out2 +tempfiles readelf.out1 readelf.out2 tempfiles out.stripped1 out.debug1 out.stripped2 out.debug2 -status=0 +runtest_status=0 runtest() { infile=$1 is_ET_REL=$2 @@ -37,113 +39,41 @@ runtest() { rm -f $outfile1 $debugfile1 $outfile2 $debugfile2 testrun ${abs_top_builddir}/src/strip -o $outfile1 -f $debugfile1 $infile || - { echo "*** failure strip $infile"; status=1; } + { echo "*** failure strip $infile"; runtest_status=1; } testrun ${abs_top_builddir}/src/strip --reloc-debug-sections -o $outfile2 \ -f $debugfile2 $infile || - { echo "*** failure strip --reloc-debug-sections $infile"; status=1; } + { echo "*** failure strip --reloc-debug-sections $infile"; runtest_status=1; } - # shouldn't make any difference for stripped files. - testrun ${abs_top_builddir}/src/readelf -a $outfile1 > readelf.out || - { echo "*** failure readelf -a outfile1 $infile"; status=1; } - - testrun_compare ${abs_top_builddir}/src/readelf -a $outfile2 < readelf.out || - { echo "*** failure compare stripped files $infile"; status=1; } + testrun ${abs_top_builddir}/src/elfcmp $outfile1 $outfile2 || + { echo "*** failure compare stripped files $infile"; runtest_status=1; } # debug files however should be smaller, when ET_REL. SIZE1=$(stat -c%s $debugfile1) SIZE2=$(stat -c%s $debugfile2) test \( \( $is_ET_REL -eq 1 \) -a \( $SIZE1 -gt $SIZE2 \) \) \ -o \( \( $is_ET_REL -eq 0 \) -a \( $SIZE1 -eq $SIZE2 \) \) || - { echo "*** failure --reloc-debug-sections not smaller $infile"; status=1; } + { echo "*** failure --reloc-debug-sections not smaller $infile"; runtest_status=1; } # Strip of DWARF section lines, offset will not match. # Everything else should match. - testrun ${abs_top_builddir}/src/readelf -w $debugfile1 \ + testrun ${abs_top_builddir}/src/readelf -N -w $debugfile1 \ | grep -v ^DWARF\ section > readelf.out1 || - { echo "*** failure readelf -w debugfile1 $infile"; status=1; } + { echo "*** failure readelf -N -w debugfile1 $infile"; runtest_status=1; } - testrun ${abs_top_builddir}/src/readelf -w $debugfile2 \ + testrun ${abs_top_builddir}/src/readelf -N -w $debugfile2 \ | grep -v ^DWARF\ section > readelf.out2 || - { echo "*** failure readelf -w debugfile2 $infile"; status=1; } + { echo "*** failure readelf -N -w debugfile2 $infile"; runtest_status=1; } testrun_compare cat readelf.out1 < readelf.out2 || - { echo "*** failure readelf -w compare $infile"; status=1; } + { echo "*** failure readelf -N -w compare $infile"; runtest_status=1; } testrun ${abs_top_builddir}/src/strip --reloc-debug-sections-only \ $debugfile1 || { echo "*** failure strip --reloc-debug-sections-only $debugfile1"; \ - status=1; } + runtest_status=1; } cmp $debugfile1 $debugfile2 || { echo "*** failure --reloc-debug-sections[-only] $debugfile1 $debugfile2"; \ - status=1; } + runtest_status=1; } } - -# Most simple hello world kernel module for various architectures. -# Make sure that it contains debuginfo with CONFIG_DEBUG_INFO=y. -# :::::::::::::: -# Makefile -# :::::::::::::: -# obj-m := hello.o -# hello-y := init.o exit.o -# -# all: -# make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \ -# CONFIG_DEBUG_INFO=y modules -# :::::::::::::: -# init.c -# :::::::::::::: -# #include -# #include -# -# int init_module(void) -# { -# printk(KERN_INFO "Hello, world!\n"); -# return 0; -# } -# :::::::::::::: -# exit.c -# :::::::::::::: -# #include -# #include -# -# void cleanup_module() -# { -# printk(KERN_INFO "Goodbye, World!\n"); -# } -runtest hello_i386.ko 1 -runtest hello_x86_64.ko 1 -runtest hello_ppc64.ko 1 -runtest hello_s390.ko 1 -runtest hello_aarch64.ko 1 -runtest hello_m68k.ko 1 -runtest hello_riscv64.ko 1 -runtest hello_csky.ko 1 - -# self test, shouldn't impact non-ET_REL files at all. -runtest ${abs_top_builddir}/src/strip 0 -runtest ${abs_top_builddir}/src/strip.o 1 - -# Copy ET_REL file for self-test and make sure to run with/without -# elf section compression. -tempfiles strip-uncompressed.o strip-compressed.o -testrun ${abs_top_builddir}/src/elfcompress -o strip-uncompressed.o -t none \ - ${abs_top_builddir}/src/strip.o -testrun ${abs_top_builddir}/src/elfcompress -o strip-compressed.o -t zlib \ - --force ${abs_top_builddir}/src/strip.o - -runtest strip-uncompressed.o 1 -runtest strip-compressed.o 1 - -# See run-readelf-zdebug-rel.sh -testfiles testfile-debug-rel-ppc64.o -runtest testfile-debug-rel-ppc64.o 1 - -testfiles testfile-debug-rel-ppc64-z.o -runtest testfile-debug-rel-ppc64-z.o 1 - -testfiles testfile-debug-rel-ppc64-g.o -runtest testfile-debug-rel-ppc64-g.o 1 - -exit $status diff --git a/tests/system-elf-gelf-test.c b/tests/system-elf-gelf-test.c new file mode 100644 index 0000000000000000000000000000000000000000..5a0e4e760af3c84b7dfd4efbe8f78ade5c7aa784 --- /dev/null +++ b/tests/system-elf-gelf-test.c @@ -0,0 +1,36 @@ +/* Explicit test compiling with system elf.h header plus libelf/gelf headers. + + Copyright (C) Mark J. Wielaard + 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 . */ + +#include +#include +#include "../libelf/libelf.h" +#include "../libelf/gelf.h" + +int +main (void) +{ + /* Trivial test, this is really a compile test anyway. */ + if (elf_version (EV_CURRENT) == EV_NONE) + return -1; + + /* This will obviously fail. It is just to check that gelf_getclass + available (both at compile time and runtime). */ + int cls = gelf_getclass (NULL); + + return cls == ELFCLASSNONE ? 0 : -1; +} diff --git a/tests/run-copymany-sections.sh b/tests/test-copymany-subr.sh old mode 100755 new mode 100644 similarity index 64% rename from tests/run-copymany-sections.sh rename to tests/test-copymany-subr.sh index 84c052c957fcf992c905257958c38993564cb47e..054103b40b31b740ef8df407a2bff9183637b407 --- a/tests/run-copymany-sections.sh +++ b/tests/test-copymany-subr.sh @@ -35,12 +35,13 @@ test_copy_and_add () testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file} # Can we add a section (in-place)? - testrun ${abs_builddir}/addsections 65535 ${out_file} + testrun ${abs_builddir}/addsections 32768 ${out_file} testrun ${abs_top_builddir}/src/readelf -S ${out_file} > readelf.out nr=$(grep '.extra' readelf.out | wc -l) # We try twice... - if test ${nr} != 65535 -a ${nr} != 131070; then + if test ${nr} != 32768 -a ${nr} != 65536; then # Show what went wrong + echo nr: ${nr} testrun ${abs_top_builddir}/src/readelf -S ${out_file} exit 1 fi @@ -54,46 +55,8 @@ test_copy_and_add () # A collection of random testfiles to test 32/64bit, little/big endian # and non-ET_REL (with phdrs)/ET_REL (without phdrs). -# Try to add 0xffff sections twice. +# Try to add 0x0fff sections twice. -# 32bit, big endian, rel -testfiles testfile29 -test_copy_and_add testfile29 -test_copy_and_add testfile29.copy - -# 64bit, big endian, rel -testfiles testfile23 -test_copy_and_add testfile23 -test_copy_and_add testfile23.copy - -# 32bit, little endian, rel -testfiles testfile9 -test_copy_and_add testfile9 -test_copy_and_add testfile9.copy - -# 64bit, little endian, rel -testfiles testfile38 -test_copy_and_add testfile38 -test_copy_and_add testfile38.copy - -# 32bit, big endian, non-rel -testfiles testfile26 -test_copy_and_add testfile26 -test_copy_and_add testfile26.copy - -# 64bit, big endian, non-rel -testfiles testfile27 -test_copy_and_add testfile27 -test_copy_and_add testfile27.copy - -# 32bit, little endian, non-rel -testfiles testfile -test_copy_and_add testfile -test_copy_and_add testfile.copy - -# 64bit, little endian, non-rel -testfiles testfile10 -test_copy_and_add testfile10 -test_copy_and_add testfile10.copy - -exit 0 +# Separated out into subtests +# run-copymany-be32.sh run-copymany-be64.sh +# run-copymany-le32.sh run-copymany-le64.sh diff --git a/tests/test-core-lib.so.bz2 b/tests/test-core-lib.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/test-core.exec.bz2 b/tests/test-core.exec.bz2 old mode 100755 new mode 100644 diff --git a/tests/test-offset-loop.bz2 b/tests/test-offset-loop.bz2 old mode 100755 new mode 100644 diff --git a/tests/test-wrapper.sh b/tests/test-wrapper.sh old mode 100755 new mode 100644 diff --git a/tests/testfile-addrx_constx-4.bz2 b/tests/testfile-addrx_constx-4.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-addrx_constx-5.bz2 b/tests/testfile-addrx_constx-5.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-arm-flags.bz2 b/tests/testfile-arm-flags.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-backtrace-demangle.bz2 b/tests/testfile-backtrace-demangle.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-const-values.debug.bz2 b/tests/testfile-const-values.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-debug-types.bz2 b/tests/testfile-debug-types.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-debug.bz2 b/tests/testfile-debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-dw-form-indirect.bz2 b/tests/testfile-dw-form-indirect.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-dwarf-4.bz2 b/tests/testfile-dwarf-4.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-dwarf-5.bz2 b/tests/testfile-dwarf-5.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-dwfl-report-elf-align-shlib.so.bz2 b/tests/testfile-dwfl-report-elf-align-shlib.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-dwzstr.bz2 b/tests/testfile-dwzstr.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-gnu-property-note-aarch64.bz2 b/tests/testfile-gnu-property-note-aarch64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-gnu-property-note.bz2 b/tests/testfile-gnu-property-note.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-info-link.bz2 b/tests/testfile-info-link.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-info-link.debuginfo.bz2 b/tests/testfile-info-link.debuginfo.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-info-link.stripped.bz2 b/tests/testfile-info-link.stripped.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-inlines-lto.bz2 b/tests/testfile-inlines-lto.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7e2e2bfd481a1d56f8a396a39726c3d21c984620 Binary files /dev/null and b/tests/testfile-inlines-lto.bz2 differ diff --git a/tests/testfile-inlines.bz2 b/tests/testfile-inlines.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-lex-inlines.bz2 b/tests/testfile-lex-inlines.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-lto-gcc10.bz2 b/tests/testfile-lto-gcc10.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-lto-gcc8.bz2 b/tests/testfile-lto-gcc8.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-lto-gcc9.bz2 b/tests/testfile-lto-gcc9.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-m68k-s.bz2 b/tests/testfile-m68k-s.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-m68k.bz2 b/tests/testfile-m68k.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-macinfo.bz2 b/tests/testfile-macinfo.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-macros-0xff.bz2 b/tests/testfile-macros-0xff.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-macros-0xff.s b/tests/testfile-macros-0xff.s deleted file mode 100644 index 7fdd35c2277f728214fc2a49c372be1aa2dcf60e..0000000000000000000000000000000000000000 --- a/tests/testfile-macros-0xff.s +++ /dev/null @@ -1,153 +0,0 @@ - .file "x.c" - .text -.Ltext0: - .globl main - .type main, @function -main: -.LFB0: - .file 1 "x.c" - .loc 1 3 0 - .cfi_startproc - pushq %rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - movq %rsp, %rbp - .cfi_def_cfa_register 6 - .loc 1 3 0 - movl $0, %eax - popq %rbp - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE0: - .size main, .-main -.Letext0: - .section .debug_info,"",@progbits -.Ldebug_info0: - .long 0x52 - .value 0x4 - .long .Ldebug_abbrev0 - .byte 0x8 - .uleb128 0x1 - .long .LASF244 - .byte 0x4 - .string "x.c" - .long .LASF245 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .long .Ldebug_line0 - .long .Ldebug_macro0 - .uleb128 0x2 - .long .LASF246 - .byte 0x1 - .byte 0x3 - .long 0x4e - .quad .LFB0 - .quad .LFE0-.LFB0 - .uleb128 0x1 - .byte 0x9c - .uleb128 0x3 - .byte 0x4 - .byte 0x5 - .string "int" - .byte 0 - .section .debug_abbrev,"",@progbits -.Ldebug_abbrev0: - .uleb128 0x1 - .uleb128 0x11 - .byte 0x1 - .uleb128 0x25 - .uleb128 0xe - .uleb128 0x13 - .uleb128 0xb - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x1b - .uleb128 0xe - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x10 - .uleb128 0x17 - .uleb128 0x2119 - .uleb128 0x17 - .byte 0 - .byte 0 - .uleb128 0x2 - .uleb128 0x2e - .byte 0 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2117 - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x3 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0x8 - .byte 0 - .byte 0 - .byte 0 - .section .debug_aranges,"",@progbits - .long 0x2c - .value 0x2 - .long .Ldebug_info0 - .byte 0x8 - .byte 0 - .value 0 - .value 0 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .quad 0 - .quad 0 - .section .debug_macro,"",@progbits -.Ldebug_macro0: - .value 0x4 - .byte 0x6 - .long .Ldebug_line0 - .byte 0x1 - .byte 0xff - .uleb128 0 - .byte 0xff - .byte 0x3 - .uleb128 0 - .uleb128 0x1 - .byte 0x5 - .uleb128 0x1 - .long .LASF243 - .byte 0x4 - .byte 0 - .section .debug_line,"",@progbits -.Ldebug_line0: - .section .debug_str,"MS",@progbits,1 -.LASF245: - .string "/home/petr/proj/elfutils/master/elfutils" -.LASF244: - .string "GNU C++ 4.9.0 20140422 (Red Hat 4.9.0-1) -mtune=generic -march=x86-64 -g3" -.LASF243: - .string "FOO 0" -.LASF246: - .string "main" - .ident "GCC: (GNU) 4.9.0 20140422 (Red Hat 4.9.0-1)" - .section .note.GNU-stack,"",@progbits diff --git a/tests/testfile-macros-object.o.bz2 b/tests/testfile-macros-object.o.bz2 deleted file mode 100644 index de5fa1a0cd8ef250955c434d6b93ac06fd111a74..0000000000000000000000000000000000000000 Binary files a/tests/testfile-macros-object.o.bz2 and /dev/null differ diff --git a/tests/testfile-macros.bz2 b/tests/testfile-macros.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-nobitsalign.bz2 b/tests/testfile-nobitsalign.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-nobitsalign.strip.bz2 b/tests/testfile-nobitsalign.strip.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-ppc64-min-instr.bz2 b/tests/testfile-ppc64-min-instr.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-riscv64-s.bz2 b/tests/testfile-riscv64-s.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-riscv64.bz2 b/tests/testfile-riscv64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-s390x-hash-both.bz2 b/tests/testfile-s390x-hash-both.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-splitdwarf-4.bz2 b/tests/testfile-splitdwarf-4.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-splitdwarf-5.bz2 b/tests/testfile-splitdwarf-5.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-splitdwarf4-not-split4.debug.bz2 b/tests/testfile-splitdwarf4-not-split4.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-stridex.bz2 b/tests/testfile-stridex.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-version.bz2 b/tests/testfile-version.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-x32-d.bz2 b/tests/testfile-x32-d.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-x32-debug.bz2 b/tests/testfile-x32-debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-x32-s.bz2 b/tests/testfile-x32-s.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-x32.bz2 b/tests/testfile-x32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zdebug.bz2 b/tests/testfile-zdebug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgabi32.bz2 b/tests/testfile-zgabi32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgabi32be.bz2 b/tests/testfile-zgabi32be.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgabi64.bz2 b/tests/testfile-zgabi64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgabi64be.bz2 b/tests/testfile-zgabi64be.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgnu32.bz2 b/tests/testfile-zgnu32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgnu32be.bz2 b/tests/testfile-zgnu32be.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgnu64.bz2 b/tests/testfile-zgnu64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile-zgnu64be.bz2 b/tests/testfile-zgnu64be.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile51.bz2 b/tests/testfile51.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-32.noshdrs.so.bz2 b/tests/testfile52-32.noshdrs.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-32.prelink.so.bz2 b/tests/testfile52-32.prelink.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-32.so.bz2 b/tests/testfile52-32.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-32.so.debug.bz2 b/tests/testfile52-32.so.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-64.noshdrs.so.bz2 b/tests/testfile52-64.noshdrs.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-64.prelink.so.bz2 b/tests/testfile52-64.prelink.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-64.so.bz2 b/tests/testfile52-64.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile52-64.so.debug.bz2 b/tests/testfile52-64.so.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile53-32.bz2 b/tests/testfile53-32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile53-32.debug.bz2 b/tests/testfile53-32.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile53-32.prelink.bz2 b/tests/testfile53-32.prelink.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile53-64.bz2 b/tests/testfile53-64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile53-64.debug.bz2 b/tests/testfile53-64.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile53-64.prelink.bz2 b/tests/testfile53-64.prelink.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-32.noshdrs.so.bz2 b/tests/testfile54-32.noshdrs.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-32.prelink.so.bz2 b/tests/testfile54-32.prelink.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-32.so.bz2 b/tests/testfile54-32.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-32.so.debug.bz2 b/tests/testfile54-32.so.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-64.noshdrs.so.bz2 b/tests/testfile54-64.noshdrs.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-64.prelink.so.bz2 b/tests/testfile54-64.prelink.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-64.so.bz2 b/tests/testfile54-64.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile54-64.so.debug.bz2 b/tests/testfile54-64.so.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile55-32.bz2 b/tests/testfile55-32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile55-32.debug.bz2 b/tests/testfile55-32.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile55-32.prelink.bz2 b/tests/testfile55-32.prelink.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile55-64.bz2 b/tests/testfile55-64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile55-64.debug.bz2 b/tests/testfile55-64.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile55-64.prelink.bz2 b/tests/testfile55-64.prelink.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile59.bz2 b/tests/testfile59.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile66.bz2 b/tests/testfile66.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile69.so.bz2 b/tests/testfile69.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_class_func.bz2 b/tests/testfile_class_func.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_const_type.bz2 b/tests/testfile_const_type.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_entry_value.bz2 b/tests/testfile_entry_value.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_implicit_pointer.bz2 b/tests/testfile_implicit_pointer.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_implicit_value.bz2 b/tests/testfile_implicit_value.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_low_high_pc.bz2 b/tests/testfile_low_high_pc.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_multi_main.bz2 b/tests/testfile_multi_main.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_multi_noline.bz2 b/tests/testfile_multi_noline.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_nested_funcs.bz2 b/tests/testfile_nested_funcs.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_parameter_ref.bz2 b/tests/testfile_parameter_ref.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_pt_gnu_prop.bz2 b/tests/testfile_pt_gnu_prop.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfile_pt_gnu_prop32.bz2 b/tests/testfile_pt_gnu_prop32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileaarch64-debugframe.bz2 b/tests/testfileaarch64-debugframe.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileaarch64.bz2 b/tests/testfileaarch64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilearm-debugframe.bz2 b/tests/testfilearm-debugframe.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilearm.bz2 b/tests/testfilearm.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebasmin.bz2 b/tests/testfilebasmin.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebaxmin.bz2 b/tests/testfilebaxmin.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbg.bz2 b/tests/testfilebazdbg.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbg.debug.bz2 b/tests/testfilebazdbg.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbg_pl.bz2 b/tests/testfilebazdbg_pl.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbg_plr.bz2 b/tests/testfilebazdbg_plr.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbgppc64.bz2 b/tests/testfilebazdbgppc64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbgppc64.debug.bz2 b/tests/testfilebazdbgppc64.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbgppc64_pl.bz2 b/tests/testfilebazdbgppc64_pl.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdbgppc64_plr.bz2 b/tests/testfilebazdbgppc64_plr.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdyn.bz2 b/tests/testfilebazdyn.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazdynppc64.bz2 b/tests/testfilebazdynppc64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazmdb.bz2 b/tests/testfilebazmdb.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazmdbppc64.bz2 b/tests/testfilebazmdbppc64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazmin.bz2 b/tests/testfilebazmin.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazmin_pl.bz2 b/tests/testfilebazmin_pl.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazmin_plr.bz2 b/tests/testfilebazmin_plr.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazminppc64.bz2 b/tests/testfilebazminppc64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazminppc64_pl.bz2 b/tests/testfilebazminppc64_pl.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebazminppc64_plr.bz2 b/tests/testfilebazminppc64_plr.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebaztab.bz2 b/tests/testfilebaztab.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilebaztabppc64.bz2 b/tests/testfilebaztabppc64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfiledwarfinlines.bz2 b/tests/testfiledwarfinlines.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilefoobarbaz.bz2 b/tests/testfilefoobarbaz.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilegdbindex5.bz2 b/tests/testfilegdbindex5.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilegdbindex7.bz2 b/tests/testfilegdbindex7.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilegdbindex9-no-maininfo.bz2 b/tests/testfilegdbindex9-no-maininfo.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..043b8d38df6c19365c39f2c6d23d1c49ff507d14 Binary files /dev/null and b/tests/testfilegdbindex9-no-maininfo.bz2 differ diff --git a/tests/testfilegdbindex9.bz2 b/tests/testfilegdbindex9.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9a2c18931a21392f396fa05c305f79ec434a851e Binary files /dev/null and b/tests/testfilegdbindex9.bz2 differ diff --git a/tests/testfileloc.bz2 b/tests/testfileloc.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilemacro.bz2 b/tests/testfilemacro.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilenolines.bz2 b/tests/testfilenolines.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileppc32-debugframe.bz2 b/tests/testfileppc32-debugframe.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileppc32.bz2 b/tests/testfileppc32.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileppc64-debugframe.bz2 b/tests/testfileppc64-debugframe.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileppc64.bz2 b/tests/testfileppc64.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileranges4.debug.bz2 b/tests/testfileranges4.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfileranges5.debug.bz2 b/tests/testfileranges5.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfiles390.bz2 b/tests/testfiles390.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfiles390x.bz2 b/tests/testfiles390x.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilesplitranges4.debug.bz2 b/tests/testfilesplitranges4.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testfilesplitranges5.debug.bz2 b/tests/testfilesplitranges5.debug.bz2 old mode 100755 new mode 100644 diff --git a/tests/testlib_dynseg.so.bz2 b/tests/testlib_dynseg.so.bz2 old mode 100755 new mode 100644 diff --git a/tests/varlocs.c b/tests/varlocs.c index d2c13767cd03ae40598d167a626e745dc4f15f2a..8e563fd32152f92ccdca3fd648d231e821c4d2e9 100644 --- a/tests/varlocs.c +++ b/tests/varlocs.c @@ -251,6 +251,12 @@ print_expr (Dwarf_Attribute *attr, Dwarf_Op *expr, Dwarf_Addr addr, int depth) printf ("%s", opname); break; + case DW_OP_GNU_uninit: + /* No arguments. Special. It means the expression describes + an value which hasn't been initialized (yet). */ + printf ("%s", opname); + break; + case DW_OP_call_frame_cfa: /* No arguments. Special. Pushes Call Frame Address as computed by CFI data (dwarf_cfi_addrframe will fetch that info (either from