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/OAT.xml b/OAT.xml index 712fe9d263440ef35940f36ac784d587166a0bcb..a34f7dfbed540780dbb03af48201af2cd9b011d5 100644 --- a/OAT.xml +++ b/OAT.xml @@ -36,7 +36,7 @@ - + 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/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/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/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/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.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_dis.h b/libcpu/i386_dis.h deleted file mode 100644 index a5cc01f9191ec3f2ff8b8aae2f3c3478b3e9a5a7..0000000000000000000000000000000000000000 --- a/libcpu/i386_dis.h +++ /dev/null @@ -1,1657 +0,0 @@ -#define MNEMONIC_BITS 10 -#define SUFFIX_BITS 3 -#define FCT1_BITS 7 -#define STR1_BITS 4 -#define OFF1_1_BITS 7 -#define OFF1_1_BIAS 3 -#define OFF1_2_BITS 7 -#define OFF1_2_BIAS 4 -#define OFF1_3_BITS 1 -#define OFF1_3_BIAS 7 -#define FCT2_BITS 6 -#define STR2_BITS 2 -#define OFF2_1_BITS 7 -#define OFF2_1_BIAS 5 -#define OFF2_2_BITS 7 -#define OFF2_2_BIAS 4 -#define OFF2_3_BITS 4 -#define OFF2_3_BIAS 7 -#define FCT3_BITS 4 -#define STR3_BITS 1 -#define OFF3_1_BITS 6 -#define OFF3_1_BIAS 10 -#define OFF3_2_BITS 1 -#define OFF3_2_BIAS 21 - -#include - -#define suffix_none 0 -#define suffix_w 1 -#define suffix_w0 2 -#define suffix_W 3 -#define suffix_tttn 4 -#define suffix_D 7 -#define suffix_w1 5 -#define suffix_W1 6 - -static const opfct_t op1_fct[] = -{ - NULL, - FCT_MOD$R_M, - FCT_Mod$R_m, - FCT_abs, - FCT_ax, - FCT_ax$w, - FCT_ccc, - FCT_ddd, - FCT_disp8, - FCT_ds_bx, - FCT_ds_si, - FCT_dx, - FCT_es_di, - FCT_freg, - FCT_imm$s, - FCT_imm$w, - FCT_imm16, - FCT_imm8, - FCT_imms8, - FCT_mmxreg, - FCT_mod$16r_m, - FCT_mod$64r_m, - FCT_mod$8r_m, - FCT_mod$r_m, - FCT_mod$r_m$w, - FCT_reg, - FCT_reg$w, - FCT_reg16, - FCT_reg64, - FCT_rel, - FCT_sel, - FCT_sreg2, - FCT_sreg3, - FCT_string, - FCT_xmmreg, -}; -static const char op1_str[] = - "%ax\0" - "%cl\0" - "%eax\0" - "%st\0" - "%xmm0\0" - "*"; -static const uint8_t op1_str_idx[] = { - 0, - 4, - 8, - 13, - 17, - 23, -}; -static const opfct_t op2_fct[] = -{ - NULL, - FCT_MOD$R_M, - FCT_Mod$R_m, - FCT_abs, - FCT_absval, - FCT_ax$w, - FCT_ccc, - FCT_ddd, - FCT_ds_si, - FCT_dx, - FCT_es_di, - FCT_freg, - FCT_imm8, - FCT_mmxreg, - FCT_mod$64r_m, - FCT_mod$r_m, - FCT_mod$r_m$w, - FCT_moda$r_m, - FCT_reg, - FCT_reg$w, - FCT_reg64, - FCT_sreg3, - FCT_string, - FCT_xmmreg, -}; -static const char op2_str[] = - "%ecx\0" - "%st"; -static const uint8_t op2_str_idx[] = { - 0, - 5, -}; -static const opfct_t op3_fct[] = -{ - NULL, - FCT_mmxreg, - FCT_mod$r_m, - FCT_reg, - FCT_string, - FCT_xmmreg, -}; -static const char op3_str[] = - "%edx"; -static const uint8_t op3_str_idx[] = { - 0, -}; -static const struct instr_enc instrtab[] = -{ - { .mnemonic = MNE_aaa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_aad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_aam, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_aas, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addsubpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addsubps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_arpl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bound, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 17, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bsf, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bswap, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 25, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bt, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bts, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bts, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_call, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 29, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_call, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 21, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lcall, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 30, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 4, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lcall, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 21, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_clc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cli, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_syscall, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_clts, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sysret, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sysenter, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sysexit, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmov, .rep = 0, .repe = 0, .suffix = 4, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmps, .rep = 0, .repe = 1, .suffix = 1, .modrm = 0, .fct1 = 12, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 8, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpxchg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 11, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 8, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpxchg8b, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cpuid, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtdq2pd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpd2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttpd2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_daa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_das, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_dec, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_dec, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 25, .str1 = 0, .off1_1 = 2, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_div, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_emms, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_enter, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 16, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 12, .str2 = 0, .off2_1 = 19, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fchs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fabs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ftst, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxam, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fld1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldl2t, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldl2e, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldpi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldlg2, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldln2, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldz, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_f2xm1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fyl2x, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fptan, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fpatan, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxtract, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fprem1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdecstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fincstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fprem, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fyl2xp1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsqrt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsincos, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_frndint, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fscale, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsin, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcos, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fadd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fadd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fadd, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmul, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsub, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubr, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fst, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fst, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fstp, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldenv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldcw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstenv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstcw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxch, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_faddp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fiadd, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmove, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmulp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fimul, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisub, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubrp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisubr, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 1, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fbld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomip, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fbstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fchs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fclex, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_finit, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fwait, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnclex, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmove, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovbe, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovnb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovne, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovnbe, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovnu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcom, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcom, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomp, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcompp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomip, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucomi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucomip, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcos, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdecstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdiv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdiv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdiv, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidivl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidiv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivrp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivr, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidivrl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidivr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivrp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ffree, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovbe, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ficom, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ficomp, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fild, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fildl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fildll, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fincstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fninit, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fist, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fistp, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fistpll, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisttp, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisttpll, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fstpt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fld, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucom, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_frstor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucomp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnsave, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_hlt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_idiv, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_imul, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_imul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_imul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 14, .str1 = 0, .off1_1 = 13, .off1_2 = 2, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 3, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_in, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_in, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 11, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 3, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_inc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_inc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 25, .str1 = 0, .off1_1 = 2, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ins, .rep = 1, .repe = 0, .suffix = 1, .modrm = 0, .fct1 = 11, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 10, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_int, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_int3, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_into, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_invd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_swapgs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_invlpg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_iret, .rep = 0, .repe = 0, .suffix = 6, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_j, .rep = 0, .repe = 0, .suffix = 4, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_j, .rep = 0, .repe = 0, .suffix = 4, .modrm = 0, .fct1 = 29, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_set, .rep = 0, .repe = 0, .suffix = 4, .modrm = 1, .fct1 = 22, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_jmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_jmp, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 29, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_jmp, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 21, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ljmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 30, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 4, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ljmp, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 21, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lahf, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lar, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lds, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lea, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_leave, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_les, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lfs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lgs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lgdt, .rep = 0, .repe = 0, .suffix = 2, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lidt, .rep = 0, .repe = 0, .suffix = 2, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lldt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lmsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lock, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lods, .rep = 1, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 10, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 3, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_loop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_loope, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_loopne, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lsl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ltr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 3, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 35, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 37, .off1_2 = 3, .off1_3 = 0, .fct2 = 3, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 6, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 6, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 7, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 7, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 32, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 21, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movs, .rep = 1, .repe = 0, .suffix = 1, .modrm = 0, .fct1 = 10, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 10, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsbl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 22, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movswl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movzbl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 22, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movzwl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mul, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_neg, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pause, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_nop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_popcnt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_not, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_out, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 12, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_out, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 9, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_outs, .rep = 1, .repe = 0, .suffix = 1, .modrm = 0, .fct1 = 10, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 9, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 32, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_popf, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 25, .str1 = 0, .off1_1 = 2, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 25, .str1 = 0, .off1_1 = 2, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 14, .str1 = 0, .off1_1 = 5, .off1_2 = 2, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 31, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 32, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pusha, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_popa, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pushf, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rdmsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rdpmc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rdtsc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ret, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ret, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 16, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lret, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lret, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 16, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rol, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rol, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rol, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ror, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ror, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ror, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rsm, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sahf, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sar, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sar, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sar, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_scas, .rep = 0, .repe = 1, .suffix = 0, .modrm = 0, .fct1 = 12, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 3, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_set, .rep = 0, .repe = 0, .suffix = 4, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_shld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_shr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shrd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_shrd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_vmcall, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmlaunch, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmresume, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmxoff, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmread, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 28, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 14, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmwrite, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sgdtl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_monitor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 3, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 1, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 4, .str3 = 1, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mwait, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 3, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 22, .str2 = 1, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sidtl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sldt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_smsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_stc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_std, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sti, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_stos, .rep = 1, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 10, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_str, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_test, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_test, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_test, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ud2a, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_verr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_verw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_wbinvd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetch, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 22, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetchw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 22, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetchnta, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetcht0, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetcht1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetcht2, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_nop, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_wrmsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xadd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 11, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 8, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xchg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xchg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 4, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xlat, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 9, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_emms, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pand, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pand, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pandn, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pandn, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_por, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_por, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pxor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pxor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpeqps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpltps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpleps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpunordps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpneqps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnltps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnleps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpordps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpeqss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpltss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpless, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpunordss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpneqss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnltss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnless, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpordss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxrstor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxsave, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ldmxcsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_stmxcsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movupd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movups, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movupd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movups, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movddup, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsldup, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhlpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpcklpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpcklps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpckhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpckhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movshdup, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movapd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movaps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movapd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movaps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsi2sd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsi2ss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpi2pd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpi2ps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttsd2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttss2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttpd2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttps2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpd2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsd2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtss2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtps2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ucomisd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ucomiss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_comisd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_comiss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_getsec, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movmskpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movmskps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rsqrtss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rsqrtps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcpss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcpps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_orpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_orps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xorpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xorps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsd2ss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtss2sd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpd2ps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtps2pd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtps2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttps2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtdq2ps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packsswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packsswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packuswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packuswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packssdw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packssdw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklqdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhqdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pshufd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pshuflw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pshufhw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pshufw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 1, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_haddpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_haddps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_hsubpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_hsubps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movnti, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 1, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_pextrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 3, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pextrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 3, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_shufpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_shufps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmullw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmullw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdq2q, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 19, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovmskb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovmskb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 19, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lddqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmuludq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmuludq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psadbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psadbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maskmovdqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maskmovq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 19, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pshufb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pshufb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhrsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhrsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_palignr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_palignr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 1, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_vmclear, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmxon, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmptrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmptrst, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lfence, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mfence, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sfence, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_clflush, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_blendps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_blendpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_blendvps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 5, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_blendvpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 5, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_dpps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_dppd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_insertps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_movntdqa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mpsadbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_packusdw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pblendvb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 5, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pblendw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpestri, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpestrm, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpistri, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpistrm, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phminposuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxud, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminud, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxbd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxbq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxwq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxbd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxbq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxwq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmuldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ptest, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 23, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_roundps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_roundpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_roundss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_roundsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 17, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 31, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, -}; -static const uint8_t match_data[] = -{ - 0x11, 0x37, - 0x22, 0xd5, 0xa, - 0x22, 0xd4, 0xa, - 0x11, 0x3f, - 0x1, 0xfe, 0x14, - 0x2, 0xfe, 0x80, 0x38, 0x10, - 0x2, 0xfe, 0x82, 0x38, 0x10, - 0x2, 0xfe, 0x10, 0, 0, - 0x2, 0xfe, 0x12, 0, 0, - 0x1, 0xfe, 0x4, - 0x2, 0xfe, 0x80, 0x38, 0, - 0x12, 0x83, 0x38, 0, - 0x2, 0xfe, 0, 0, 0, - 0x2, 0xfe, 0x2, 0, 0, - 0x34, 0x66, 0xf, 0xd0, 0, 0, - 0x34, 0xf2, 0xf, 0xd0, 0, 0, - 0x1, 0xfe, 0x24, - 0x2, 0xfe, 0x80, 0x38, 0x20, - 0x2, 0xfe, 0x82, 0x38, 0x20, - 0x2, 0xfe, 0x20, 0, 0, - 0x2, 0xfe, 0x22, 0, 0, - 0x34, 0x66, 0xf, 0x54, 0, 0, - 0x23, 0xf, 0x54, 0, 0, - 0x34, 0x66, 0xf, 0x55, 0, 0, - 0x23, 0xf, 0x55, 0, 0, - 0x12, 0x63, 0, 0, - 0x12, 0x62, 0, 0, - 0x23, 0xf, 0xbc, 0, 0, - 0x23, 0xf, 0xbd, 0, 0, - 0x12, 0xf, 0xf8, 0xc8, - 0x23, 0xf, 0xa3, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x20, - 0x23, 0xf, 0xbb, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x38, - 0x23, 0xf, 0xb3, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x30, - 0x23, 0xf, 0xab, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x28, - 0x11, 0xe8, - 0x12, 0xff, 0x38, 0x10, - 0x11, 0x9a, - 0x12, 0xff, 0x38, 0x18, - 0x11, 0x98, - 0x11, 0x99, - 0x11, 0xf8, - 0x11, 0xfc, - 0x11, 0xfa, - 0x22, 0xf, 0x5, - 0x22, 0xf, 0x6, - 0x22, 0xf, 0x7, - 0x22, 0xf, 0x34, - 0x22, 0xf, 0x35, - 0x11, 0xf5, - 0x13, 0xf, 0xf0, 0x40, 0, 0, - 0x1, 0xfe, 0x3c, - 0x2, 0xfe, 0x80, 0x38, 0x38, - 0x12, 0x83, 0x38, 0x38, - 0x2, 0xfe, 0x38, 0, 0, - 0x2, 0xfe, 0x3a, 0, 0, - 0x34, 0xf2, 0xf, 0xc2, 0, 0, - 0x34, 0xf3, 0xf, 0xc2, 0, 0, - 0x34, 0x66, 0xf, 0xc2, 0, 0, - 0x23, 0xf, 0xc2, 0, 0, - 0x1, 0xfe, 0xa6, - 0x13, 0xf, 0xfe, 0xb0, 0, 0, - 0x23, 0xf, 0xc7, 0x38, 0x8, - 0x22, 0xf, 0xa2, - 0x34, 0xf3, 0xf, 0xe6, 0, 0, - 0x34, 0xf2, 0xf, 0xe6, 0, 0, - 0x34, 0x66, 0xf, 0xe6, 0, 0, - 0x11, 0x27, - 0x11, 0x2f, - 0x2, 0xfe, 0xfe, 0x38, 0x8, - 0x1, 0xf8, 0x48, - 0x2, 0xfe, 0xf6, 0x38, 0x30, - 0x22, 0xf, 0x77, - 0x11, 0xc8, - 0x22, 0xd9, 0xd0, - 0x22, 0xd9, 0xe0, - 0x22, 0xd9, 0xe1, - 0x22, 0xd9, 0xe4, - 0x22, 0xd9, 0xe5, - 0x22, 0xd9, 0xe8, - 0x22, 0xd9, 0xe9, - 0x22, 0xd9, 0xea, - 0x22, 0xd9, 0xeb, - 0x22, 0xd9, 0xec, - 0x22, 0xd9, 0xed, - 0x22, 0xd9, 0xee, - 0x22, 0xd9, 0xf0, - 0x22, 0xd9, 0xf1, - 0x22, 0xd9, 0xf2, - 0x22, 0xd9, 0xf3, - 0x22, 0xd9, 0xf4, - 0x22, 0xd9, 0xf5, - 0x22, 0xd9, 0xf6, - 0x22, 0xd9, 0xf7, - 0x22, 0xd9, 0xf8, - 0x22, 0xd9, 0xf9, - 0x22, 0xd9, 0xfa, - 0x22, 0xd9, 0xfb, - 0x22, 0xd9, 0xfc, - 0x22, 0xd9, 0xfd, - 0x22, 0xd9, 0xfe, - 0x22, 0xd9, 0xff, - 0x12, 0xd8, 0xf8, 0xc0, - 0x12, 0xdc, 0xf8, 0xc0, - 0x2, 0xfb, 0xd8, 0x38, 0, - 0x12, 0xd8, 0xf8, 0xc8, - 0x12, 0xdc, 0xf8, 0xc8, - 0x2, 0xfb, 0xd8, 0x38, 0x8, - 0x12, 0xd8, 0xf8, 0xe0, - 0x12, 0xdc, 0xf8, 0xe0, - 0x2, 0xfb, 0xd8, 0x38, 0x20, - 0x12, 0xd8, 0xf8, 0xe8, - 0x12, 0xdc, 0xf8, 0xe8, - 0x2, 0xfb, 0xd8, 0x38, 0x28, - 0x12, 0xdd, 0xf8, 0xd0, - 0x2, 0xfb, 0xd9, 0x38, 0x10, - 0x12, 0xdd, 0xf8, 0xd8, - 0x2, 0xfb, 0xd9, 0x38, 0x18, - 0x12, 0xd9, 0x38, 0x20, - 0x12, 0xd9, 0x38, 0x28, - 0x12, 0xd9, 0x38, 0x30, - 0x12, 0xd9, 0x38, 0x38, - 0x12, 0xd9, 0xf8, 0xc8, - 0x12, 0xde, 0xf8, 0xc0, - 0x12, 0xda, 0xf8, 0xc0, - 0x2, 0xfb, 0xda, 0x38, 0, - 0x12, 0xda, 0xf8, 0xc8, - 0x12, 0xde, 0xf8, 0xc8, - 0x2, 0xfb, 0xda, 0x38, 0x8, - 0x12, 0xde, 0xf8, 0xe0, - 0x2, 0xfb, 0xda, 0x38, 0x20, - 0x12, 0xde, 0xf8, 0xe8, - 0x2, 0xfb, 0xda, 0x38, 0x28, - 0x22, 0xdf, 0xe0, - 0x12, 0xdf, 0x38, 0x20, - 0x12, 0xdf, 0xf8, 0xf0, - 0x12, 0xdf, 0x38, 0x30, - 0x22, 0xd9, 0xe0, - 0x33, 0x9b, 0xdb, 0xe2, - 0x33, 0x9b, 0xdb, 0xe3, - 0x11, 0x9b, - 0x22, 0xdb, 0xe2, - 0x12, 0xda, 0xf8, 0xc0, - 0x12, 0xda, 0xf8, 0xc8, - 0x12, 0xda, 0xf8, 0xd0, - 0x12, 0xda, 0xf8, 0xd8, - 0x12, 0xdb, 0xf8, 0xc0, - 0x12, 0xdb, 0xf8, 0xc8, - 0x12, 0xdb, 0xf8, 0xd0, - 0x12, 0xdb, 0xf8, 0xd8, - 0x12, 0xd8, 0xf8, 0xd0, - 0x2, 0xfb, 0xd8, 0x38, 0x10, - 0x12, 0xd8, 0xf8, 0xd8, - 0x2, 0xfb, 0xd8, 0x38, 0x18, - 0x22, 0xde, 0xd9, - 0x12, 0xdb, 0xf8, 0xf0, - 0x12, 0xdf, 0xf8, 0xf0, - 0x12, 0xdb, 0xf8, 0xe8, - 0x12, 0xdf, 0xf8, 0xe8, - 0x22, 0xd9, 0xff, - 0x22, 0xd9, 0xf6, - 0x12, 0xd8, 0xf8, 0xf0, - 0x12, 0xdc, 0xf8, 0xf0, - 0x2, 0xfb, 0xd8, 0x38, 0x30, - 0x12, 0xda, 0x38, 0x30, - 0x12, 0xde, 0xf8, 0xf0, - 0x12, 0xde, 0x38, 0x30, - 0x12, 0xde, 0xf8, 0xf8, - 0x12, 0xd8, 0xf8, 0xf8, - 0x12, 0xdc, 0xf8, 0xf8, - 0x2, 0xfb, 0xd8, 0x38, 0x38, - 0x12, 0xda, 0x38, 0x38, - 0x12, 0xde, 0x38, 0x38, - 0x12, 0xde, 0xf8, 0xf0, - 0x12, 0xdd, 0xf8, 0xc0, - 0x12, 0xda, 0xf8, 0xd0, - 0x2, 0xfb, 0xda, 0x38, 0x10, - 0x12, 0xda, 0xf8, 0xd8, - 0x2, 0xfb, 0xda, 0x38, 0x18, - 0x12, 0xdf, 0x38, 0, - 0x12, 0xdb, 0x38, 0, - 0x12, 0xdf, 0x38, 0x28, - 0x22, 0xd9, 0xf7, - 0x22, 0xdb, 0xe3, - 0x2, 0xfb, 0xdb, 0x38, 0x10, - 0x2, 0xfb, 0xdb, 0x38, 0x18, - 0x12, 0xdf, 0x38, 0x38, - 0x2, 0xfb, 0xdb, 0x38, 0x8, - 0x12, 0xdd, 0x38, 0x8, - 0x12, 0xdb, 0x38, 0x28, - 0x12, 0xdb, 0x38, 0x38, - 0x12, 0xd9, 0xf8, 0xc0, - 0x2, 0xfb, 0xd9, 0x38, 0, - 0x12, 0xdd, 0xf8, 0xe0, - 0x12, 0xdd, 0x38, 0x20, - 0x12, 0xdd, 0xf8, 0xe8, - 0x12, 0xdd, 0x38, 0x30, - 0x12, 0xdd, 0x38, 0x38, - 0x11, 0xf4, - 0x2, 0xfe, 0xf6, 0x38, 0x38, - 0x2, 0xfe, 0xf6, 0x38, 0x28, - 0x23, 0xf, 0xaf, 0, 0, - 0x2, 0xfd, 0x69, 0, 0, - 0x1, 0xfe, 0xe4, - 0x1, 0xfe, 0xec, - 0x2, 0xfe, 0xfe, 0x38, 0, - 0x1, 0xf8, 0x40, - 0x1, 0xfe, 0x6c, - 0x11, 0xcd, - 0x11, 0xcc, - 0x11, 0xce, - 0x22, 0xf, 0x8, - 0x33, 0xf, 0x1, 0xf8, - 0x23, 0xf, 0x1, 0x38, 0x38, - 0x11, 0xcf, - 0x1, 0xf0, 0x70, - 0x12, 0xf, 0xf0, 0x80, - 0x13, 0xf, 0xf0, 0x90, 0x38, 0, - 0x11, 0xe3, - 0x11, 0xeb, - 0x11, 0xe9, - 0x12, 0xff, 0x38, 0x20, - 0x11, 0xea, - 0x12, 0xff, 0x38, 0x28, - 0x11, 0x9f, - 0x23, 0xf, 0x2, 0, 0, - 0x12, 0xc5, 0, 0, - 0x12, 0x8d, 0, 0, - 0x11, 0xc9, - 0x12, 0xc4, 0, 0, - 0x23, 0xf, 0xb4, 0, 0, - 0x23, 0xf, 0xb5, 0, 0, - 0x23, 0xf, 0x1, 0x38, 0x10, - 0x23, 0xf, 0x1, 0x38, 0x18, - 0x23, 0xf, 0, 0x38, 0x10, - 0x23, 0xf, 0x1, 0x38, 0x30, - 0x11, 0xf0, - 0x1, 0xfe, 0xac, - 0x11, 0xe2, - 0x11, 0xe1, - 0x11, 0xe0, - 0x23, 0xf, 0x3, 0, 0, - 0x23, 0xf, 0xb2, 0, 0, - 0x23, 0xf, 0, 0x38, 0x18, - 0x2, 0xfe, 0x88, 0, 0, - 0x2, 0xfe, 0x8a, 0, 0, - 0x2, 0xfe, 0xc6, 0x38, 0, - 0x1, 0xf0, 0xb0, - 0x1, 0xfe, 0xa0, - 0x1, 0xfe, 0xa2, - 0x23, 0xf, 0x20, 0xc0, 0xc0, - 0x23, 0xf, 0x22, 0xc0, 0xc0, - 0x23, 0xf, 0x21, 0xc0, 0xc0, - 0x23, 0xf, 0x23, 0xc0, 0xc0, - 0x12, 0x8c, 0, 0, - 0x12, 0x8e, 0, 0, - 0x1, 0xfe, 0xa4, - 0x23, 0xf, 0xbe, 0, 0, - 0x23, 0xf, 0xbf, 0, 0, - 0x23, 0xf, 0xb6, 0, 0, - 0x23, 0xf, 0xb7, 0, 0, - 0x2, 0xfe, 0xf6, 0x38, 0x20, - 0x2, 0xfe, 0xf6, 0x38, 0x18, - 0x22, 0xf3, 0x90, - 0x11, 0x90, - 0x34, 0xf3, 0xf, 0xb8, 0, 0, - 0x2, 0xfe, 0xf6, 0x38, 0x10, - 0x2, 0xfe, 0x8, 0, 0, - 0x2, 0xfe, 0xa, 0, 0, - 0x2, 0xfe, 0x80, 0x38, 0x8, - 0x2, 0xfe, 0x82, 0x38, 0x8, - 0x1, 0xfe, 0xc, - 0x1, 0xfe, 0xe6, - 0x1, 0xfe, 0xee, - 0x1, 0xfe, 0x6e, - 0x12, 0x8f, 0x38, 0, - 0x12, 0xf, 0xc7, 0x81, - 0x11, 0x9d, - 0x12, 0xff, 0x38, 0x30, - 0x1, 0xf8, 0x50, - 0x1, 0xf8, 0x58, - 0x1, 0xfd, 0x68, - 0x1, 0xe7, 0x6, - 0x12, 0xf, 0xc7, 0x80, - 0x11, 0x60, - 0x11, 0x61, - 0x11, 0x9c, - 0x2, 0xfe, 0xd0, 0x38, 0x10, - 0x2, 0xfe, 0xd2, 0x38, 0x10, - 0x2, 0xfe, 0xc0, 0x38, 0x10, - 0x2, 0xfe, 0xd0, 0x38, 0x18, - 0x2, 0xfe, 0xd2, 0x38, 0x18, - 0x2, 0xfe, 0xc0, 0x38, 0x18, - 0x22, 0xf, 0x32, - 0x22, 0xf, 0x33, - 0x22, 0xf, 0x31, - 0x11, 0xc3, - 0x11, 0xc2, - 0x11, 0xcb, - 0x11, 0xca, - 0x2, 0xfe, 0xd0, 0x38, 0, - 0x2, 0xfe, 0xd2, 0x38, 0, - 0x2, 0xfe, 0xc0, 0x38, 0, - 0x2, 0xfe, 0xd0, 0x38, 0x8, - 0x2, 0xfe, 0xd2, 0x38, 0x8, - 0x2, 0xfe, 0xc0, 0x38, 0x8, - 0x22, 0xf, 0xaa, - 0x11, 0x9e, - 0x2, 0xfe, 0xd0, 0x38, 0x38, - 0x2, 0xfe, 0xd2, 0x38, 0x38, - 0x2, 0xfe, 0xc0, 0x38, 0x38, - 0x2, 0xfe, 0x18, 0, 0, - 0x2, 0xfe, 0x1a, 0, 0, - 0x1, 0xfe, 0x1c, - 0x2, 0xfe, 0x80, 0x38, 0x18, - 0x2, 0xfe, 0x82, 0x38, 0x18, - 0x1, 0xfe, 0xae, - 0x13, 0xf, 0xf0, 0x90, 0x38, 0, - 0x2, 0xfe, 0xd0, 0x38, 0x20, - 0x2, 0xfe, 0xd2, 0x38, 0x20, - 0x2, 0xfe, 0xc0, 0x38, 0x20, - 0x2, 0xfe, 0xd0, 0x38, 0x28, - 0x23, 0xf, 0xa4, 0, 0, - 0x23, 0xf, 0xa5, 0, 0, - 0x2, 0xfe, 0xd2, 0x38, 0x28, - 0x2, 0xfe, 0xc0, 0x38, 0x28, - 0x23, 0xf, 0xac, 0, 0, - 0x23, 0xf, 0xad, 0, 0, - 0x33, 0xf, 0x1, 0xc1, - 0x33, 0xf, 0x1, 0xc2, - 0x33, 0xf, 0x1, 0xc3, - 0x33, 0xf, 0x1, 0xc4, - 0x23, 0xf, 0x78, 0, 0, - 0x23, 0xf, 0x79, 0, 0, - 0x23, 0xf, 0x1, 0x38, 0, - 0x33, 0xf, 0x1, 0xc8, - 0x33, 0xf, 0x1, 0xc9, - 0x23, 0xf, 0x1, 0x38, 0x8, - 0x23, 0xf, 0, 0x38, 0, - 0x23, 0xf, 0x1, 0x38, 0x20, - 0x11, 0xf9, - 0x11, 0xfd, - 0x11, 0xfb, - 0x1, 0xfe, 0xaa, - 0x23, 0xf, 0, 0x38, 0x8, - 0x2, 0xfe, 0x28, 0, 0, - 0x2, 0xfe, 0x2a, 0, 0, - 0x1, 0xfe, 0x2c, - 0x2, 0xfe, 0x80, 0x38, 0x28, - 0x2, 0xfe, 0x82, 0x38, 0x28, - 0x2, 0xfe, 0x84, 0, 0, - 0x1, 0xfe, 0xa8, - 0x2, 0xfe, 0xf6, 0x38, 0, - 0x22, 0xf, 0xb, - 0x23, 0xf, 0, 0x38, 0x20, - 0x23, 0xf, 0, 0x38, 0x28, - 0x22, 0xf, 0x9, - 0x23, 0xf, 0xd, 0x38, 0, - 0x23, 0xf, 0xd, 0x38, 0x8, - 0x23, 0xf, 0x18, 0x38, 0, - 0x23, 0xf, 0x18, 0x38, 0x8, - 0x23, 0xf, 0x18, 0x38, 0x10, - 0x23, 0xf, 0x18, 0x38, 0x18, - 0x23, 0xf, 0x1f, 0, 0, - 0x22, 0xf, 0x30, - 0x13, 0xf, 0xfe, 0xc0, 0, 0, - 0x2, 0xfe, 0x86, 0, 0, - 0x1, 0xf8, 0x90, - 0x11, 0xd7, - 0x2, 0xfe, 0x30, 0, 0, - 0x2, 0xfe, 0x32, 0, 0, - 0x1, 0xfe, 0x34, - 0x2, 0xfe, 0x80, 0x38, 0x30, - 0x2, 0xfe, 0x82, 0x38, 0x30, - 0x22, 0xf, 0x77, - 0x34, 0x66, 0xf, 0xdb, 0, 0, - 0x23, 0xf, 0xdb, 0, 0, - 0x34, 0x66, 0xf, 0xdf, 0, 0, - 0x23, 0xf, 0xdf, 0, 0, - 0x34, 0x66, 0xf, 0xf5, 0, 0, - 0x23, 0xf, 0xf5, 0, 0, - 0x34, 0x66, 0xf, 0xeb, 0, 0, - 0x23, 0xf, 0xeb, 0, 0, - 0x34, 0x66, 0xf, 0xef, 0, 0, - 0x23, 0xf, 0xef, 0, 0, - 0x23, 0xf, 0x55, 0, 0, - 0x23, 0xf, 0x54, 0, 0, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x1, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x2, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x3, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x4, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x5, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x6, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x7, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x1, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x2, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x3, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x4, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x5, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x6, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x7, - 0x23, 0xf, 0xae, 0x38, 0x8, - 0x23, 0xf, 0xae, 0x38, 0, - 0x23, 0xf, 0xae, 0x38, 0x10, - 0x23, 0xf, 0xae, 0x38, 0x18, - 0x34, 0xf2, 0xf, 0x10, 0, 0, - 0x34, 0xf3, 0xf, 0x10, 0, 0, - 0x34, 0x66, 0xf, 0x10, 0, 0, - 0x23, 0xf, 0x10, 0, 0, - 0x34, 0xf2, 0xf, 0x11, 0, 0, - 0x34, 0xf3, 0xf, 0x11, 0, 0, - 0x34, 0x66, 0xf, 0x11, 0, 0, - 0x23, 0xf, 0x11, 0, 0, - 0x34, 0xf2, 0xf, 0x12, 0, 0, - 0x34, 0xf3, 0xf, 0x12, 0, 0, - 0x34, 0x66, 0xf, 0x12, 0, 0, - 0x23, 0xf, 0x12, 0xc0, 0xc0, - 0x23, 0xf, 0x12, 0, 0, - 0x34, 0x66, 0xf, 0x13, 0xc0, 0xc0, - 0x23, 0xf, 0x13, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0x13, 0, 0, - 0x23, 0xf, 0x13, 0, 0, - 0x34, 0x66, 0xf, 0x14, 0, 0, - 0x23, 0xf, 0x14, 0, 0, - 0x34, 0x66, 0xf, 0x15, 0, 0, - 0x23, 0xf, 0x15, 0, 0, - 0x34, 0xf3, 0xf, 0x16, 0, 0, - 0x34, 0x66, 0xf, 0x16, 0, 0, - 0x23, 0xf, 0x16, 0xc0, 0xc0, - 0x23, 0xf, 0x16, 0, 0, - 0x34, 0x66, 0xf, 0x17, 0xc0, 0xc0, - 0x23, 0xf, 0x17, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0x17, 0, 0, - 0x23, 0xf, 0x17, 0, 0, - 0x34, 0x66, 0xf, 0x28, 0, 0, - 0x23, 0xf, 0x28, 0, 0, - 0x34, 0x66, 0xf, 0x29, 0, 0, - 0x23, 0xf, 0x29, 0, 0, - 0x34, 0xf2, 0xf, 0x2a, 0, 0, - 0x34, 0xf3, 0xf, 0x2a, 0, 0, - 0x34, 0x66, 0xf, 0x2a, 0, 0, - 0x23, 0xf, 0x2a, 0, 0, - 0x34, 0x66, 0xf, 0x2b, 0, 0, - 0x23, 0xf, 0x2b, 0, 0, - 0x34, 0xf2, 0xf, 0x2c, 0, 0, - 0x34, 0xf3, 0xf, 0x2c, 0, 0, - 0x34, 0x66, 0xf, 0x2c, 0, 0, - 0x23, 0xf, 0x2c, 0, 0, - 0x34, 0x66, 0xf, 0x2d, 0, 0, - 0x34, 0xf2, 0xf, 0x2d, 0, 0, - 0x34, 0xf3, 0xf, 0x2d, 0, 0, - 0x23, 0xf, 0x2d, 0, 0, - 0x34, 0x66, 0xf, 0x2e, 0, 0, - 0x23, 0xf, 0x2e, 0, 0, - 0x34, 0x66, 0xf, 0x2f, 0, 0, - 0x23, 0xf, 0x2f, 0, 0, - 0x22, 0xf, 0x37, - 0x34, 0x66, 0xf, 0x50, 0xc0, 0xc0, - 0x23, 0xf, 0x50, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0x51, 0, 0, - 0x34, 0xf2, 0xf, 0x51, 0, 0, - 0x34, 0xf3, 0xf, 0x51, 0, 0, - 0x23, 0xf, 0x51, 0, 0, - 0x34, 0xf3, 0xf, 0x52, 0, 0, - 0x23, 0xf, 0x52, 0, 0, - 0x34, 0xf3, 0xf, 0x53, 0, 0, - 0x23, 0xf, 0x53, 0, 0, - 0x34, 0x66, 0xf, 0x54, 0, 0, - 0x23, 0xf, 0x54, 0, 0, - 0x34, 0x66, 0xf, 0x55, 0, 0, - 0x23, 0xf, 0x55, 0, 0, - 0x34, 0x66, 0xf, 0x56, 0, 0, - 0x23, 0xf, 0x56, 0, 0, - 0x34, 0x66, 0xf, 0x57, 0, 0, - 0x23, 0xf, 0x57, 0, 0, - 0x34, 0xf2, 0xf, 0x58, 0, 0, - 0x34, 0xf3, 0xf, 0x58, 0, 0, - 0x34, 0x66, 0xf, 0x58, 0, 0, - 0x23, 0xf, 0x58, 0, 0, - 0x34, 0xf2, 0xf, 0x59, 0, 0, - 0x34, 0xf3, 0xf, 0x59, 0, 0, - 0x34, 0x66, 0xf, 0x59, 0, 0, - 0x23, 0xf, 0x59, 0, 0, - 0x34, 0xf2, 0xf, 0x5a, 0, 0, - 0x34, 0xf3, 0xf, 0x5a, 0, 0, - 0x34, 0x66, 0xf, 0x5a, 0, 0, - 0x23, 0xf, 0x5a, 0, 0, - 0x34, 0x66, 0xf, 0x5b, 0, 0, - 0x34, 0xf3, 0xf, 0x5b, 0, 0, - 0x23, 0xf, 0x5b, 0, 0, - 0x34, 0xf2, 0xf, 0x5c, 0, 0, - 0x34, 0xf3, 0xf, 0x5c, 0, 0, - 0x34, 0x66, 0xf, 0x5c, 0, 0, - 0x23, 0xf, 0x5c, 0, 0, - 0x34, 0xf2, 0xf, 0x5d, 0, 0, - 0x34, 0xf3, 0xf, 0x5d, 0, 0, - 0x34, 0x66, 0xf, 0x5d, 0, 0, - 0x23, 0xf, 0x5d, 0, 0, - 0x34, 0xf2, 0xf, 0x5e, 0, 0, - 0x34, 0xf3, 0xf, 0x5e, 0, 0, - 0x34, 0x66, 0xf, 0x5e, 0, 0, - 0x23, 0xf, 0x5e, 0, 0, - 0x34, 0xf2, 0xf, 0x5f, 0, 0, - 0x34, 0xf3, 0xf, 0x5f, 0, 0, - 0x34, 0x66, 0xf, 0x5f, 0, 0, - 0x23, 0xf, 0x5f, 0, 0, - 0x34, 0x66, 0xf, 0x60, 0, 0, - 0x23, 0xf, 0x60, 0, 0, - 0x34, 0x66, 0xf, 0x61, 0, 0, - 0x23, 0xf, 0x61, 0, 0, - 0x34, 0x66, 0xf, 0x62, 0, 0, - 0x23, 0xf, 0x62, 0, 0, - 0x34, 0x66, 0xf, 0x63, 0, 0, - 0x23, 0xf, 0x63, 0, 0, - 0x34, 0x66, 0xf, 0x64, 0, 0, - 0x23, 0xf, 0x64, 0, 0, - 0x34, 0x66, 0xf, 0x65, 0, 0, - 0x23, 0xf, 0x65, 0, 0, - 0x34, 0x66, 0xf, 0x66, 0, 0, - 0x23, 0xf, 0x66, 0, 0, - 0x34, 0x66, 0xf, 0x67, 0, 0, - 0x23, 0xf, 0x67, 0, 0, - 0x34, 0x66, 0xf, 0x68, 0, 0, - 0x23, 0xf, 0x68, 0, 0, - 0x34, 0x66, 0xf, 0x69, 0, 0, - 0x23, 0xf, 0x69, 0, 0, - 0x34, 0x66, 0xf, 0x6a, 0, 0, - 0x23, 0xf, 0x6a, 0, 0, - 0x34, 0x66, 0xf, 0x6b, 0, 0, - 0x23, 0xf, 0x6b, 0, 0, - 0x34, 0x66, 0xf, 0x6c, 0, 0, - 0x34, 0x66, 0xf, 0x6d, 0, 0, - 0x34, 0x66, 0xf, 0x6e, 0, 0, - 0x23, 0xf, 0x6e, 0, 0, - 0x34, 0x66, 0xf, 0x6f, 0, 0, - 0x34, 0xf3, 0xf, 0x6f, 0, 0, - 0x23, 0xf, 0x6f, 0, 0, - 0x34, 0x66, 0xf, 0x70, 0, 0, - 0x34, 0xf2, 0xf, 0x70, 0, 0, - 0x34, 0xf3, 0xf, 0x70, 0, 0, - 0x23, 0xf, 0x70, 0, 0, - 0x34, 0x66, 0xf, 0x74, 0, 0, - 0x23, 0xf, 0x74, 0, 0, - 0x34, 0x66, 0xf, 0x75, 0, 0, - 0x23, 0xf, 0x75, 0, 0, - 0x34, 0x66, 0xf, 0x76, 0, 0, - 0x23, 0xf, 0x76, 0, 0, - 0x34, 0x66, 0xf, 0x7c, 0, 0, - 0x34, 0xf2, 0xf, 0x7c, 0, 0, - 0x34, 0x66, 0xf, 0x7d, 0, 0, - 0x34, 0xf2, 0xf, 0x7d, 0, 0, - 0x34, 0x66, 0xf, 0x7e, 0, 0, - 0x34, 0xf3, 0xf, 0x7e, 0, 0, - 0x23, 0xf, 0x7e, 0, 0, - 0x34, 0x66, 0xf, 0x7f, 0, 0, - 0x34, 0xf3, 0xf, 0x7f, 0, 0, - 0x23, 0xf, 0x7f, 0, 0, - 0x23, 0xf, 0xc3, 0, 0, - 0x34, 0x66, 0xf, 0xc4, 0, 0, - 0x23, 0xf, 0xc4, 0, 0, - 0x34, 0x66, 0xf, 0xc5, 0xc0, 0xc0, - 0x23, 0xf, 0xc5, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xc6, 0, 0, - 0x23, 0xf, 0xc6, 0, 0, - 0x34, 0x66, 0xf, 0xd1, 0, 0, - 0x23, 0xf, 0xd1, 0, 0, - 0x34, 0x66, 0xf, 0xd2, 0, 0, - 0x23, 0xf, 0xd2, 0, 0, - 0x34, 0x66, 0xf, 0xd3, 0, 0, - 0x23, 0xf, 0xd3, 0, 0, - 0x34, 0x66, 0xf, 0xd4, 0, 0, - 0x23, 0xf, 0xd4, 0, 0, - 0x34, 0x66, 0xf, 0xd5, 0, 0, - 0x23, 0xf, 0xd5, 0, 0, - 0x34, 0x66, 0xf, 0xd6, 0, 0, - 0x34, 0xf2, 0xf, 0xd6, 0xc0, 0xc0, - 0x34, 0xf3, 0xf, 0xd6, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xd7, 0xc0, 0xc0, - 0x23, 0xf, 0xd7, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xd8, 0, 0, - 0x23, 0xf, 0xd8, 0, 0, - 0x34, 0x66, 0xf, 0xd9, 0, 0, - 0x23, 0xf, 0xd9, 0, 0, - 0x34, 0x66, 0xf, 0xda, 0, 0, - 0x23, 0xf, 0xda, 0, 0, - 0x34, 0x66, 0xf, 0xdc, 0, 0, - 0x23, 0xf, 0xdc, 0, 0, - 0x34, 0x66, 0xf, 0xdd, 0, 0, - 0x23, 0xf, 0xdd, 0, 0, - 0x34, 0x66, 0xf, 0xde, 0, 0, - 0x23, 0xf, 0xde, 0, 0, - 0x34, 0x66, 0xf, 0xe0, 0, 0, - 0x23, 0xf, 0xe0, 0, 0, - 0x34, 0x66, 0xf, 0xe1, 0, 0, - 0x23, 0xf, 0xe1, 0, 0, - 0x34, 0x66, 0xf, 0xe2, 0, 0, - 0x23, 0xf, 0xe2, 0, 0, - 0x34, 0x66, 0xf, 0xe3, 0, 0, - 0x23, 0xf, 0xe3, 0, 0, - 0x34, 0x66, 0xf, 0xe4, 0, 0, - 0x23, 0xf, 0xe4, 0, 0, - 0x34, 0x66, 0xf, 0xe5, 0, 0, - 0x23, 0xf, 0xe5, 0, 0, - 0x34, 0x66, 0xf, 0xe7, 0, 0, - 0x23, 0xf, 0xe7, 0, 0, - 0x34, 0x66, 0xf, 0xe8, 0, 0, - 0x23, 0xf, 0xe8, 0, 0, - 0x34, 0x66, 0xf, 0xe9, 0, 0, - 0x23, 0xf, 0xe9, 0, 0, - 0x34, 0x66, 0xf, 0xea, 0, 0, - 0x23, 0xf, 0xea, 0, 0, - 0x34, 0x66, 0xf, 0xec, 0, 0, - 0x23, 0xf, 0xec, 0, 0, - 0x34, 0x66, 0xf, 0xed, 0, 0, - 0x23, 0xf, 0xed, 0, 0, - 0x34, 0x66, 0xf, 0xee, 0, 0, - 0x23, 0xf, 0xee, 0, 0, - 0x34, 0xf2, 0xf, 0xf0, 0, 0, - 0x34, 0x66, 0xf, 0xf1, 0, 0, - 0x23, 0xf, 0xf1, 0, 0, - 0x34, 0x66, 0xf, 0xf2, 0, 0, - 0x23, 0xf, 0xf2, 0, 0, - 0x34, 0x66, 0xf, 0xf3, 0, 0, - 0x23, 0xf, 0xf3, 0, 0, - 0x34, 0x66, 0xf, 0xf4, 0, 0, - 0x23, 0xf, 0xf4, 0, 0, - 0x34, 0x66, 0xf, 0xf6, 0, 0, - 0x23, 0xf, 0xf6, 0, 0, - 0x34, 0x66, 0xf, 0xf7, 0xc0, 0xc0, - 0x23, 0xf, 0xf7, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xf8, 0, 0, - 0x23, 0xf, 0xf8, 0, 0, - 0x34, 0x66, 0xf, 0xf9, 0, 0, - 0x23, 0xf, 0xf9, 0, 0, - 0x34, 0x66, 0xf, 0xfa, 0, 0, - 0x23, 0xf, 0xfa, 0, 0, - 0x34, 0x66, 0xf, 0xfb, 0, 0, - 0x23, 0xf, 0xfb, 0, 0, - 0x34, 0x66, 0xf, 0xfc, 0, 0, - 0x23, 0xf, 0xfc, 0, 0, - 0x34, 0x66, 0xf, 0xfd, 0, 0, - 0x23, 0xf, 0xfd, 0, 0, - 0x34, 0x66, 0xf, 0xfe, 0, 0, - 0x23, 0xf, 0xfe, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0, 0, 0, - 0x34, 0xf, 0x38, 0, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1, 0, 0, - 0x34, 0xf, 0x38, 0x1, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x2, 0, 0, - 0x34, 0xf, 0x38, 0x2, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3, 0, 0, - 0x34, 0xf, 0x38, 0x3, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x4, 0, 0, - 0x34, 0xf, 0x38, 0x4, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x5, 0, 0, - 0x34, 0xf, 0x38, 0x5, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x6, 0, 0, - 0x34, 0xf, 0x38, 0x6, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x7, 0, 0, - 0x34, 0xf, 0x38, 0x7, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x8, 0, 0, - 0x34, 0xf, 0x38, 0x8, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x9, 0, 0, - 0x34, 0xf, 0x38, 0x9, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0xa, 0, 0, - 0x34, 0xf, 0x38, 0xa, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0xb, 0, 0, - 0x34, 0xf, 0x38, 0xb, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1c, 0, 0, - 0x34, 0xf, 0x38, 0x1c, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1d, 0, 0, - 0x34, 0xf, 0x38, 0x1d, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1e, 0, 0, - 0x34, 0xf, 0x38, 0x1e, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xf, 0, 0, - 0x34, 0xf, 0x3a, 0xf, 0, 0, - 0x34, 0x66, 0xf, 0xc7, 0x38, 0x30, - 0x34, 0xf3, 0xf, 0xc7, 0x38, 0x30, - 0x23, 0xf, 0xc7, 0x38, 0x30, - 0x23, 0xf, 0xc7, 0x38, 0x38, - 0x34, 0x66, 0xf, 0x71, 0xf8, 0xd0, - 0x23, 0xf, 0x71, 0xf8, 0xd0, - 0x34, 0x66, 0xf, 0x71, 0xf8, 0xe0, - 0x23, 0xf, 0x71, 0xf8, 0xe0, - 0x34, 0x66, 0xf, 0x71, 0xf8, 0xf0, - 0x23, 0xf, 0x71, 0xf8, 0xf0, - 0x34, 0x66, 0xf, 0x72, 0xf8, 0xd0, - 0x23, 0xf, 0x72, 0xf8, 0xd0, - 0x34, 0x66, 0xf, 0x72, 0xf8, 0xe0, - 0x23, 0xf, 0x72, 0xf8, 0xe0, - 0x34, 0x66, 0xf, 0x72, 0xf8, 0xf0, - 0x23, 0xf, 0x72, 0xf8, 0xf0, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xd0, - 0x23, 0xf, 0x73, 0xf8, 0xd0, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xd8, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xf0, - 0x23, 0xf, 0x73, 0xf8, 0xf0, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xf8, - 0x33, 0xf, 0xae, 0xe8, - 0x33, 0xf, 0xae, 0xf0, - 0x33, 0xf, 0xae, 0xf8, - 0x23, 0xf, 0xae, 0x38, 0x38, - 0x23, 0xf, 0xf, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xc, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xd, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x14, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x15, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x40, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x41, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x21, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x2a, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x42, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x2b, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x10, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xe, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x29, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x61, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x60, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x63, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x62, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x37, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x41, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x20, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x22, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3c, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3d, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3f, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3e, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x38, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x39, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3b, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3a, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x20, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x21, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x22, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x23, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x24, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x25, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x30, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x31, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x32, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x33, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x34, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x35, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x28, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x40, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x17, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x8, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x9, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xa, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xb, 0, 0, - 0x1, 0xe7, 0x7, -}; 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_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.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/libcpu/x86_64_dis.h b/libcpu/x86_64_dis.h deleted file mode 100644 index a0198bed9753c6751dfce4b16d14a1b0c14b355f..0000000000000000000000000000000000000000 --- a/libcpu/x86_64_dis.h +++ /dev/null @@ -1,1632 +0,0 @@ -#define MNEMONIC_BITS 10 -#define SUFFIX_BITS 3 -#define FCT1_BITS 7 -#define STR1_BITS 4 -#define OFF1_1_BITS 7 -#define OFF1_1_BIAS 3 -#define OFF1_2_BITS 7 -#define OFF1_2_BIAS 4 -#define OFF1_3_BITS 1 -#define OFF1_3_BIAS 7 -#define FCT2_BITS 6 -#define STR2_BITS 2 -#define OFF2_1_BITS 7 -#define OFF2_1_BIAS 5 -#define OFF2_2_BITS 7 -#define OFF2_2_BIAS 4 -#define OFF2_3_BITS 4 -#define OFF2_3_BIAS 7 -#define FCT3_BITS 4 -#define STR3_BITS 1 -#define OFF3_1_BITS 6 -#define OFF3_1_BIAS 10 -#define OFF3_2_BITS 1 -#define OFF3_2_BIAS 21 - -#include - -#define suffix_none 0 -#define suffix_w 1 -#define suffix_w0 2 -#define suffix_W 3 -#define suffix_tttn 4 -#define suffix_D 7 -#define suffix_w1 5 -#define suffix_W1 6 - -static const opfct_t op1_fct[] = -{ - NULL, - FCT_MOD$R_M, - FCT_Mod$R_m, - FCT_abs, - FCT_ax, - FCT_ax$w, - FCT_ccc, - FCT_ddd, - FCT_disp8, - FCT_ds_bx, - FCT_ds_si, - FCT_dx, - FCT_es_di, - FCT_freg, - FCT_imm$s, - FCT_imm$w, - FCT_imm16, - FCT_imm64$w, - FCT_imm8, - FCT_imms8, - FCT_mmxreg, - FCT_mod$16r_m, - FCT_mod$64r_m, - FCT_mod$8r_m, - FCT_mod$r_m, - FCT_mod$r_m$w, - FCT_reg, - FCT_reg$w, - FCT_reg64, - FCT_rel, - FCT_sel, - FCT_sreg2, - FCT_sreg3, - FCT_string, - FCT_xmmreg, -}; -static const char op1_str[] = - "%ax\0" - "%cl\0" - "%rax\0" - "%st\0" - "%xmm0\0" - "*"; -static const uint8_t op1_str_idx[] = { - 0, - 4, - 8, - 13, - 17, - 23, -}; -static const opfct_t op2_fct[] = -{ - NULL, - FCT_MOD$R_M, - FCT_Mod$R_m, - FCT_abs, - FCT_absval, - FCT_ax$w, - FCT_ccc, - FCT_ddd, - FCT_ds_si, - FCT_dx, - FCT_es_di, - FCT_freg, - FCT_imm8, - FCT_mmxreg, - FCT_mod$64r_m, - FCT_mod$r_m, - FCT_mod$r_m$w, - FCT_oreg, - FCT_oreg$w, - FCT_reg, - FCT_reg$w, - FCT_reg64, - FCT_sreg3, - FCT_string, - FCT_xmmreg, -}; -static const char op2_str[] = - "%rcx\0" - "%st"; -static const uint8_t op2_str_idx[] = { - 0, - 5, -}; -static const opfct_t op3_fct[] = -{ - NULL, - FCT_mmxreg, - FCT_mod$r_m, - FCT_reg, - FCT_string, - FCT_xmmreg, -}; -static const char op3_str[] = - "%rdx"; -static const uint8_t op3_str_idx[] = { - 0, -}; -static const struct instr_enc instrtab[] = -{ - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_adc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_add, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addsubpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addsubps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_and, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movslq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 21, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bsf, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bswap, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 26, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bt, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_btr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bts, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_bts, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_call, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 29, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_call, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 22, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lcall, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 22, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_clc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cli, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_syscall, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_clts, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sysret, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sysenter, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sysexit, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmov, .rep = 0, .repe = 0, .suffix = 4, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmps, .rep = 0, .repe = 1, .suffix = 1, .modrm = 0, .fct1 = 12, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 8, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpxchg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 15, .off1_2 = 11, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 8, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cpuid, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtdq2pd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpd2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttpd2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_dec, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_div, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_emms, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_enter, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 16, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 12, .str2 = 0, .off2_1 = 19, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fchs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fabs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ftst, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxam, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fld1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldl2t, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldl2e, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldpi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldlg2, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldln2, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldz, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_f2xm1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fyl2x, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fptan, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fpatan, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxtract, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fprem1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdecstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fincstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fprem, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fyl2xp1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsqrt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsincos, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_frndint, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fscale, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsin, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcos, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fadd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fadd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fadd, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmul, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsub, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubr, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fst, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fst, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fstp, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldenv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldcw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstenv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstcw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxch, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_faddp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fiadd, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmove, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fmulp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fimul, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisub, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fsubrp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisubr, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 1, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fbld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomip, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fbstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fchs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fclex, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_finit, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fwait, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnclex, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmove, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovbe, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovnb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovne, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovnbe, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovnu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcom, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcom, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomp, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcompp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcomip, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucomi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucomip, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcos, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdecstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdiv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdiv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdiv, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidivl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidiv, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivrp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 2, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivr, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidivrl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fidivr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fdivrp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 4, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 11, .str2 = 0, .off2_1 = 8, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ffree, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovbe, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ficom, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fcmovu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ficomp, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fild, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fildl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fildll, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fincstp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fninit, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fist, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fistp, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fistpll, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisttp, .rep = 0, .repe = 0, .suffix = 5, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fisttpll, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fldt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fstpt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fld, .rep = 0, .repe = 0, .suffix = 7, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucom, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_frstor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fucomp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 13, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnsave, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fnstsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_hlt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_idiv, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_imul, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_imul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_imul, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 14, .str1 = 0, .off1_1 = 13, .off1_2 = 2, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 3, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_in, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_in, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 11, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 3, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_inc, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ins, .rep = 1, .repe = 0, .suffix = 1, .modrm = 0, .fct1 = 11, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 10, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_int, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_int3, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_invd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_swapgs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_invlpg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_iret, .rep = 0, .repe = 0, .suffix = 6, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_j, .rep = 0, .repe = 0, .suffix = 4, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_j, .rep = 0, .repe = 0, .suffix = 4, .modrm = 0, .fct1 = 29, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_set, .rep = 0, .repe = 0, .suffix = 4, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_jmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_jmp, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 29, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_jmp, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 22, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ljmp, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 30, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 4, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ljmp, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 22, .str1 = 6, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lahf, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lar, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lea, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_leave, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lfs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lgs, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lgdt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lidt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lldt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lmsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lock, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lods, .rep = 1, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 10, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 3, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_loop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_loope, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_loopne, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 8, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lsl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ltr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 17, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 18, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 3, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 35, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 37, .off1_2 = 3, .off1_3 = 0, .fct2 = 3, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 6, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 21, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 6, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 7, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 21, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 7, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 32, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mov, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 22, .str2 = 0, .off2_1 = 5, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movs, .rep = 1, .repe = 0, .suffix = 1, .modrm = 0, .fct1 = 10, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 10, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsbl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movswl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movzbl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movzwl, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mul, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_neg, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pause, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_popcnt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_not, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_or, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_out, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 12, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_out, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 9, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_outs, .rep = 1, .repe = 0, .suffix = 1, .modrm = 0, .fct1 = 10, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 9, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 3, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 32, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_popf, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 10, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pushq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 2, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 28, .str1 = 0, .off1_1 = 2, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 14, .str1 = 0, .off1_1 = 5, .off1_2 = 2, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 31, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_push, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 32, .str1 = 0, .off1_1 = 7, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pushf, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rdmsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rdpmc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rdtsc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ret, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ret, .rep = 0, .repe = 0, .suffix = 3, .modrm = 0, .fct1 = 16, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lret, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lret, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 16, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rol, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rol, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rol, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ror, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ror, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ror, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rsm, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sahf, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sar, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sar, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sar, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sbb, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_scas, .rep = 0, .repe = 1, .suffix = 0, .modrm = 0, .fct1 = 12, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 3, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_set, .rep = 0, .repe = 0, .suffix = 4, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shl, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_shld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_shr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shr, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_shrd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_shrd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 2, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 2, .str3 = 0, .off3_1 = 6, .off3_2 = 0, }, - { .mnemonic = MNE_vmcall, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmlaunch, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmresume, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmxoff, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmread, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 28, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 14, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmwrite, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 22, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 21, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sgdt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_monitor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 3, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 1, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 4, .str3 = 1, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mwait, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 33, .str1 = 3, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 23, .str2 = 1, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sidt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sldt, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_smsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_stc, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_std, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sti, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_stos, .rep = 1, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 5, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 10, .str2 = 0, .off2_1 = 3, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_str, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sub, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_test, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_test, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_test, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ud2a, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_verr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_verw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 21, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_wbinvd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetch, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetchw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 23, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetchnta, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetcht0, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetcht1, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_prefetcht2, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_nop, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_wrmsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xadd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 15, .off1_2 = 11, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 8, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xchg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xchg, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 4, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 17, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xlat, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 9, .str1 = 0, .off1_1 = 5, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 27, .str1 = 0, .off1_1 = 7, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 25, .str1 = 0, .off1_1 = 5, .off1_2 = 9, .off1_3 = 0, .fct2 = 20, .str2 = 0, .off2_1 = 5, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 15, .str1 = 0, .off1_1 = 5, .off1_2 = 3, .off1_3 = 0, .fct2 = 5, .str2 = 0, .off2_1 = 11, .off2_2 = 3, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 15, .str1 = 0, .off1_1 = 13, .off1_2 = 3, .off1_3 = 0, .fct2 = 16, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xor, .rep = 0, .repe = 0, .suffix = 1, .modrm = 1, .fct1 = 19, .str1 = 0, .off1_1 = 13, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 3, .off2_2 = 9, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_emms, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pand, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pand, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pandn, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pandn, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_por, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_por, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pxor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pxor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpeqps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpltps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpleps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpunordps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpneqps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnltps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnleps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpordps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpeqss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpltss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpless, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpunordss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpneqss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnltss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpnless, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cmpordss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxrstor, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_fxsave, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ldmxcsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_stmxcsr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movupd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movups, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movupd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movups, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movddup, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movsldup, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhlpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpcklpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpcklps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpckhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_unpckhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movshdup, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movlhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movhps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movapd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movaps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movapd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movaps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsi2sd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsi2ss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpi2pd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpi2ps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttsd2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttss2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttpd2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttps2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpd2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsd2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtss2si, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtps2pi, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ucomisd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ucomiss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_comisd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_comiss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_getsec, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movmskpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movmskps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sqrtps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rsqrtss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rsqrtps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcpss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_rcpps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_andnps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_orpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_orps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xorpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_xorps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_addps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mulps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtsd2ss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtss2sd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtpd2ps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtps2pd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtps2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvttps2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_cvtdq2ps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_subps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_minps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_divps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maxps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packsswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packsswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packuswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packuswb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packssdw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_packssdw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpcklqdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_punpckhqdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pshufd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pshuflw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pshufhw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pshufw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 1, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_haddpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_haddps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_hsubpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_hsubps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movnti, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 26, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 1, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_pextrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 3, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_pextrw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 3, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_shufpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_shufps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 8, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmullw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmullw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movdq2q, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movq2dq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 20, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovmskb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovmskb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 20, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 19, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddusw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxub, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pavgw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 34, .str1 = 0, .off1_1 = 23, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_movntq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 20, .str1 = 0, .off1_1 = 15, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 11, .off2_2 = 17, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lddqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmuludq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmuludq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psadbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psadbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maskmovdqu, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 34, .str1 = 0, .off1_1 = 26, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_maskmovq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 20, .str1 = 0, .off1_1 = 18, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psubq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_paddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pshufb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pshufb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phaddsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaddubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phsubsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psignd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhrsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulhrsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pabsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 21, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_palignr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_palignr, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 1, .str2 = 0, .off2_1 = 19, .off2_2 = 25, .off2_3 = 0, .fct3 = 1, .str3 = 0, .off3_1 = 16, .off3_2 = 0, }, - { .mnemonic = MNE_vmclear, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmxon, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 21, .off1_2 = 25, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmptrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_vmptrst, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psraw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrad, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrlq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psrldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_psllq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 21, .off1_2 = 0, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 16, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pslldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 18, .str1 = 0, .off1_1 = 29, .off1_2 = 0, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 24, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_lfence, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mfence, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_sfence, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 0, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_clflush, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 24, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_INVALID, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 1, .str1 = 0, .off1_1 = 13, .off1_2 = 17, .off1_3 = 0, .fct2 = 13, .str2 = 0, .off2_1 = 13, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_blendps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_blendpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_blendvps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 5, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_blendvpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 5, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_dpps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_dppd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_insertps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_movntdqa, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_mpsadbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_packusdw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pblendvb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 33, .str1 = 5, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pblendw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpeqq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpestri, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpestrm, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpistri, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpistrm, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pcmpgtq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_phminposuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pinsrd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 15, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxud, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmaxuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsb, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminud, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pminuw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxbd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxbq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxwq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovsxdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxbw, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxbd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxbq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxwd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxwq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmovzxdq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmuldq, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_pmulld, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_ptest, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 2, .str1 = 0, .off1_1 = 29, .off1_2 = 33, .off1_3 = 0, .fct2 = 24, .str2 = 0, .off2_1 = 29, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, - { .mnemonic = MNE_roundps, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_roundpd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_roundss, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_roundsd, .rep = 0, .repe = 0, .suffix = 0, .modrm = 1, .fct1 = 18, .str1 = 0, .off1_1 = 37, .off1_2 = 0, .off1_3 = 0, .fct2 = 2, .str2 = 0, .off2_1 = 27, .off2_2 = 33, .off2_3 = 0, .fct3 = 5, .str3 = 0, .off3_1 = 24, .off3_2 = 0, }, - { .mnemonic = MNE_pop, .rep = 0, .repe = 0, .suffix = 0, .modrm = 0, .fct1 = 31, .str1 = 0, .off1_1 = 0, .off1_2 = 0, .off1_3 = 0, .fct2 = 0, .str2 = 0, .off2_1 = 0, .off2_2 = 0, .off2_3 = 0, .fct3 = 0, .str3 = 0, .off3_1 = 0, .off3_2 = 0, }, -}; -static const uint8_t match_data[] = -{ - 0x1, 0xfe, 0x14, - 0x2, 0xfe, 0x80, 0x38, 0x10, - 0x2, 0xfe, 0x82, 0x38, 0x10, - 0x2, 0xfe, 0x10, 0, 0, - 0x2, 0xfe, 0x12, 0, 0, - 0x1, 0xfe, 0x4, - 0x2, 0xfe, 0x80, 0x38, 0, - 0x12, 0x83, 0x38, 0, - 0x2, 0xfe, 0, 0, 0, - 0x2, 0xfe, 0x2, 0, 0, - 0x34, 0x66, 0xf, 0xd0, 0, 0, - 0x34, 0xf2, 0xf, 0xd0, 0, 0, - 0x1, 0xfe, 0x24, - 0x2, 0xfe, 0x80, 0x38, 0x20, - 0x2, 0xfe, 0x82, 0x38, 0x20, - 0x2, 0xfe, 0x20, 0, 0, - 0x2, 0xfe, 0x22, 0, 0, - 0x34, 0x66, 0xf, 0x54, 0, 0, - 0x23, 0xf, 0x54, 0, 0, - 0x34, 0x66, 0xf, 0x55, 0, 0, - 0x23, 0xf, 0x55, 0, 0, - 0x12, 0x63, 0, 0, - 0x23, 0xf, 0xbc, 0, 0, - 0x23, 0xf, 0xbd, 0, 0, - 0x12, 0xf, 0xf8, 0xc8, - 0x23, 0xf, 0xa3, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x20, - 0x23, 0xf, 0xbb, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x38, - 0x23, 0xf, 0xb3, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x30, - 0x23, 0xf, 0xab, 0, 0, - 0x23, 0xf, 0xba, 0x38, 0x28, - 0x11, 0xe8, - 0x12, 0xff, 0x38, 0x10, - 0x12, 0xff, 0x38, 0x18, - 0x11, 0x98, - 0x11, 0x99, - 0x11, 0xf8, - 0x11, 0xfc, - 0x11, 0xfa, - 0x22, 0xf, 0x5, - 0x22, 0xf, 0x6, - 0x22, 0xf, 0x7, - 0x22, 0xf, 0x34, - 0x22, 0xf, 0x35, - 0x11, 0xf5, - 0x13, 0xf, 0xf0, 0x40, 0, 0, - 0x1, 0xfe, 0x3c, - 0x2, 0xfe, 0x80, 0x38, 0x38, - 0x12, 0x83, 0x38, 0x38, - 0x2, 0xfe, 0x38, 0, 0, - 0x2, 0xfe, 0x3a, 0, 0, - 0x34, 0xf2, 0xf, 0xc2, 0, 0, - 0x34, 0xf3, 0xf, 0xc2, 0, 0, - 0x34, 0x66, 0xf, 0xc2, 0, 0, - 0x23, 0xf, 0xc2, 0, 0, - 0x1, 0xfe, 0xa6, - 0x13, 0xf, 0xfe, 0xb0, 0, 0, - 0x23, 0xf, 0xc7, 0x38, 0x8, - 0x22, 0xf, 0xa2, - 0x34, 0xf3, 0xf, 0xe6, 0, 0, - 0x34, 0xf2, 0xf, 0xe6, 0, 0, - 0x34, 0x66, 0xf, 0xe6, 0, 0, - 0x2, 0xfe, 0xfe, 0x38, 0x8, - 0x2, 0xfe, 0xf6, 0x38, 0x30, - 0x22, 0xf, 0x77, - 0x11, 0xc8, - 0x22, 0xd9, 0xd0, - 0x22, 0xd9, 0xe0, - 0x22, 0xd9, 0xe1, - 0x22, 0xd9, 0xe4, - 0x22, 0xd9, 0xe5, - 0x22, 0xd9, 0xe8, - 0x22, 0xd9, 0xe9, - 0x22, 0xd9, 0xea, - 0x22, 0xd9, 0xeb, - 0x22, 0xd9, 0xec, - 0x22, 0xd9, 0xed, - 0x22, 0xd9, 0xee, - 0x22, 0xd9, 0xf0, - 0x22, 0xd9, 0xf1, - 0x22, 0xd9, 0xf2, - 0x22, 0xd9, 0xf3, - 0x22, 0xd9, 0xf4, - 0x22, 0xd9, 0xf5, - 0x22, 0xd9, 0xf6, - 0x22, 0xd9, 0xf7, - 0x22, 0xd9, 0xf8, - 0x22, 0xd9, 0xf9, - 0x22, 0xd9, 0xfa, - 0x22, 0xd9, 0xfb, - 0x22, 0xd9, 0xfc, - 0x22, 0xd9, 0xfd, - 0x22, 0xd9, 0xfe, - 0x22, 0xd9, 0xff, - 0x12, 0xd8, 0xf8, 0xc0, - 0x12, 0xdc, 0xf8, 0xc0, - 0x2, 0xfb, 0xd8, 0x38, 0, - 0x12, 0xd8, 0xf8, 0xc8, - 0x12, 0xdc, 0xf8, 0xc8, - 0x2, 0xfb, 0xd8, 0x38, 0x8, - 0x12, 0xd8, 0xf8, 0xe0, - 0x12, 0xdc, 0xf8, 0xe0, - 0x2, 0xfb, 0xd8, 0x38, 0x20, - 0x12, 0xd8, 0xf8, 0xe8, - 0x12, 0xdc, 0xf8, 0xe8, - 0x2, 0xfb, 0xd8, 0x38, 0x28, - 0x12, 0xdd, 0xf8, 0xd0, - 0x2, 0xfb, 0xd9, 0x38, 0x10, - 0x12, 0xdd, 0xf8, 0xd8, - 0x2, 0xfb, 0xd9, 0x38, 0x18, - 0x12, 0xd9, 0x38, 0x20, - 0x12, 0xd9, 0x38, 0x28, - 0x12, 0xd9, 0x38, 0x30, - 0x12, 0xd9, 0x38, 0x38, - 0x12, 0xd9, 0xf8, 0xc8, - 0x12, 0xde, 0xf8, 0xc0, - 0x12, 0xda, 0xf8, 0xc0, - 0x2, 0xfb, 0xda, 0x38, 0, - 0x12, 0xda, 0xf8, 0xc8, - 0x12, 0xde, 0xf8, 0xc8, - 0x2, 0xfb, 0xda, 0x38, 0x8, - 0x12, 0xde, 0xf8, 0xe0, - 0x2, 0xfb, 0xda, 0x38, 0x20, - 0x12, 0xde, 0xf8, 0xe8, - 0x2, 0xfb, 0xda, 0x38, 0x28, - 0x22, 0xdf, 0xe0, - 0x12, 0xdf, 0x38, 0x20, - 0x12, 0xdf, 0xf8, 0xf0, - 0x12, 0xdf, 0x38, 0x30, - 0x22, 0xd9, 0xe0, - 0x33, 0x9b, 0xdb, 0xe2, - 0x33, 0x9b, 0xdb, 0xe3, - 0x11, 0x9b, - 0x22, 0xdb, 0xe2, - 0x12, 0xda, 0xf8, 0xc0, - 0x12, 0xda, 0xf8, 0xc8, - 0x12, 0xda, 0xf8, 0xd0, - 0x12, 0xda, 0xf8, 0xd8, - 0x12, 0xdb, 0xf8, 0xc0, - 0x12, 0xdb, 0xf8, 0xc8, - 0x12, 0xdb, 0xf8, 0xd0, - 0x12, 0xdb, 0xf8, 0xd8, - 0x12, 0xd8, 0xf8, 0xd0, - 0x2, 0xfb, 0xd8, 0x38, 0x10, - 0x12, 0xd8, 0xf8, 0xd8, - 0x2, 0xfb, 0xd8, 0x38, 0x18, - 0x22, 0xde, 0xd9, - 0x12, 0xdb, 0xf8, 0xf0, - 0x12, 0xdf, 0xf8, 0xf0, - 0x12, 0xdb, 0xf8, 0xe8, - 0x12, 0xdf, 0xf8, 0xe8, - 0x22, 0xd9, 0xff, - 0x22, 0xd9, 0xf6, - 0x12, 0xd8, 0xf8, 0xf0, - 0x12, 0xdc, 0xf8, 0xf0, - 0x2, 0xfb, 0xd8, 0x38, 0x30, - 0x12, 0xda, 0x38, 0x30, - 0x12, 0xde, 0xf8, 0xf0, - 0x12, 0xde, 0x38, 0x30, - 0x12, 0xde, 0xf8, 0xf8, - 0x12, 0xd8, 0xf8, 0xf8, - 0x12, 0xdc, 0xf8, 0xf8, - 0x2, 0xfb, 0xd8, 0x38, 0x38, - 0x12, 0xda, 0x38, 0x38, - 0x12, 0xde, 0x38, 0x38, - 0x12, 0xde, 0xf8, 0xf0, - 0x12, 0xdd, 0xf8, 0xc0, - 0x12, 0xda, 0xf8, 0xd0, - 0x2, 0xfb, 0xda, 0x38, 0x10, - 0x12, 0xda, 0xf8, 0xd8, - 0x2, 0xfb, 0xda, 0x38, 0x18, - 0x12, 0xdf, 0x38, 0, - 0x12, 0xdb, 0x38, 0, - 0x12, 0xdf, 0x38, 0x28, - 0x22, 0xd9, 0xf7, - 0x22, 0xdb, 0xe3, - 0x2, 0xfb, 0xdb, 0x38, 0x10, - 0x2, 0xfb, 0xdb, 0x38, 0x18, - 0x12, 0xdf, 0x38, 0x38, - 0x2, 0xfb, 0xdb, 0x38, 0x8, - 0x12, 0xdd, 0x38, 0x8, - 0x12, 0xdb, 0x38, 0x28, - 0x12, 0xdb, 0x38, 0x38, - 0x12, 0xd9, 0xf8, 0xc0, - 0x2, 0xfb, 0xd9, 0x38, 0, - 0x12, 0xdd, 0xf8, 0xe0, - 0x12, 0xdd, 0x38, 0x20, - 0x12, 0xdd, 0xf8, 0xe8, - 0x12, 0xdd, 0x38, 0x30, - 0x12, 0xdd, 0x38, 0x38, - 0x11, 0xf4, - 0x2, 0xfe, 0xf6, 0x38, 0x38, - 0x2, 0xfe, 0xf6, 0x38, 0x28, - 0x23, 0xf, 0xaf, 0, 0, - 0x2, 0xfd, 0x69, 0, 0, - 0x1, 0xfe, 0xe4, - 0x1, 0xfe, 0xec, - 0x2, 0xfe, 0xfe, 0x38, 0, - 0x1, 0xfe, 0x6c, - 0x11, 0xcd, - 0x11, 0xcc, - 0x22, 0xf, 0x8, - 0x33, 0xf, 0x1, 0xf8, - 0x23, 0xf, 0x1, 0x38, 0x38, - 0x11, 0xcf, - 0x1, 0xf0, 0x70, - 0x12, 0xf, 0xf0, 0x80, - 0x13, 0xf, 0xf0, 0x90, 0x38, 0, - 0x11, 0xe3, - 0x11, 0xeb, - 0x11, 0xe9, - 0x12, 0xff, 0x38, 0x20, - 0x11, 0xea, - 0x12, 0xff, 0x38, 0x28, - 0x11, 0x9f, - 0x23, 0xf, 0x2, 0, 0, - 0x12, 0x8d, 0, 0, - 0x11, 0xc9, - 0x23, 0xf, 0xb4, 0, 0, - 0x23, 0xf, 0xb5, 0, 0, - 0x23, 0xf, 0x1, 0x38, 0x10, - 0x23, 0xf, 0x1, 0x38, 0x18, - 0x23, 0xf, 0, 0x38, 0x10, - 0x23, 0xf, 0x1, 0x38, 0x30, - 0x11, 0xf0, - 0x1, 0xfe, 0xac, - 0x11, 0xe2, - 0x11, 0xe1, - 0x11, 0xe0, - 0x23, 0xf, 0x3, 0, 0, - 0x23, 0xf, 0xb2, 0, 0, - 0x23, 0xf, 0, 0x38, 0x18, - 0x2, 0xfe, 0x88, 0, 0, - 0x2, 0xfe, 0x8a, 0, 0, - 0x2, 0xfe, 0xc6, 0x38, 0, - 0x1, 0xf0, 0xb0, - 0x1, 0xfe, 0xa0, - 0x1, 0xfe, 0xa2, - 0x23, 0xf, 0x20, 0xc0, 0xc0, - 0x23, 0xf, 0x22, 0xc0, 0xc0, - 0x23, 0xf, 0x21, 0xc0, 0xc0, - 0x23, 0xf, 0x23, 0xc0, 0xc0, - 0x12, 0x8c, 0, 0, - 0x12, 0x8e, 0, 0, - 0x1, 0xfe, 0xa4, - 0x23, 0xf, 0xbe, 0, 0, - 0x23, 0xf, 0xbf, 0, 0, - 0x23, 0xf, 0xb6, 0, 0, - 0x23, 0xf, 0xb7, 0, 0, - 0x2, 0xfe, 0xf6, 0x38, 0x20, - 0x2, 0xfe, 0xf6, 0x38, 0x18, - 0x22, 0xf3, 0x90, - 0x11, 0x90, - 0x34, 0xf3, 0xf, 0xb8, 0, 0, - 0x2, 0xfe, 0xf6, 0x38, 0x10, - 0x2, 0xfe, 0x8, 0, 0, - 0x2, 0xfe, 0xa, 0, 0, - 0x2, 0xfe, 0x80, 0x38, 0x8, - 0x2, 0xfe, 0x82, 0x38, 0x8, - 0x1, 0xfe, 0xc, - 0x1, 0xfe, 0xe6, - 0x1, 0xfe, 0xee, - 0x1, 0xfe, 0x6e, - 0x12, 0x8f, 0xf8, 0xc0, - 0x12, 0x8f, 0x38, 0, - 0x12, 0xf, 0xc7, 0x81, - 0x11, 0x9d, - 0x12, 0xff, 0xf8, 0xf0, - 0x12, 0xff, 0x38, 0x30, - 0x1, 0xf8, 0x50, - 0x1, 0xf8, 0x58, - 0x1, 0xfd, 0x68, - 0x1, 0xe7, 0x6, - 0x12, 0xf, 0xc7, 0x80, - 0x11, 0x9c, - 0x2, 0xfe, 0xd0, 0x38, 0x10, - 0x2, 0xfe, 0xd2, 0x38, 0x10, - 0x2, 0xfe, 0xc0, 0x38, 0x10, - 0x2, 0xfe, 0xd0, 0x38, 0x18, - 0x2, 0xfe, 0xd2, 0x38, 0x18, - 0x2, 0xfe, 0xc0, 0x38, 0x18, - 0x22, 0xf, 0x32, - 0x22, 0xf, 0x33, - 0x22, 0xf, 0x31, - 0x11, 0xc3, - 0x11, 0xc2, - 0x11, 0xcb, - 0x11, 0xca, - 0x2, 0xfe, 0xd0, 0x38, 0, - 0x2, 0xfe, 0xd2, 0x38, 0, - 0x2, 0xfe, 0xc0, 0x38, 0, - 0x2, 0xfe, 0xd0, 0x38, 0x8, - 0x2, 0xfe, 0xd2, 0x38, 0x8, - 0x2, 0xfe, 0xc0, 0x38, 0x8, - 0x22, 0xf, 0xaa, - 0x11, 0x9e, - 0x2, 0xfe, 0xd0, 0x38, 0x38, - 0x2, 0xfe, 0xd2, 0x38, 0x38, - 0x2, 0xfe, 0xc0, 0x38, 0x38, - 0x2, 0xfe, 0x18, 0, 0, - 0x2, 0xfe, 0x1a, 0, 0, - 0x1, 0xfe, 0x1c, - 0x2, 0xfe, 0x80, 0x38, 0x18, - 0x2, 0xfe, 0x82, 0x38, 0x18, - 0x1, 0xfe, 0xae, - 0x13, 0xf, 0xf0, 0x90, 0x38, 0, - 0x2, 0xfe, 0xd0, 0x38, 0x20, - 0x2, 0xfe, 0xd2, 0x38, 0x20, - 0x2, 0xfe, 0xc0, 0x38, 0x20, - 0x2, 0xfe, 0xd0, 0x38, 0x28, - 0x23, 0xf, 0xa4, 0, 0, - 0x23, 0xf, 0xa5, 0, 0, - 0x2, 0xfe, 0xd2, 0x38, 0x28, - 0x2, 0xfe, 0xc0, 0x38, 0x28, - 0x23, 0xf, 0xac, 0, 0, - 0x23, 0xf, 0xad, 0, 0, - 0x33, 0xf, 0x1, 0xc1, - 0x33, 0xf, 0x1, 0xc2, - 0x33, 0xf, 0x1, 0xc3, - 0x33, 0xf, 0x1, 0xc4, - 0x23, 0xf, 0x78, 0, 0, - 0x23, 0xf, 0x79, 0, 0, - 0x23, 0xf, 0x1, 0x38, 0, - 0x33, 0xf, 0x1, 0xc8, - 0x33, 0xf, 0x1, 0xc9, - 0x23, 0xf, 0x1, 0x38, 0x8, - 0x23, 0xf, 0, 0x38, 0, - 0x23, 0xf, 0x1, 0x38, 0x20, - 0x11, 0xf9, - 0x11, 0xfd, - 0x11, 0xfb, - 0x1, 0xfe, 0xaa, - 0x23, 0xf, 0, 0x38, 0x8, - 0x2, 0xfe, 0x28, 0, 0, - 0x2, 0xfe, 0x2a, 0, 0, - 0x1, 0xfe, 0x2c, - 0x2, 0xfe, 0x80, 0x38, 0x28, - 0x2, 0xfe, 0x82, 0x38, 0x28, - 0x2, 0xfe, 0x84, 0, 0, - 0x1, 0xfe, 0xa8, - 0x2, 0xfe, 0xf6, 0x38, 0, - 0x22, 0xf, 0xb, - 0x23, 0xf, 0, 0x38, 0x20, - 0x23, 0xf, 0, 0x38, 0x28, - 0x22, 0xf, 0x9, - 0x23, 0xf, 0xd, 0x38, 0, - 0x23, 0xf, 0xd, 0x38, 0x8, - 0x23, 0xf, 0x18, 0x38, 0, - 0x23, 0xf, 0x18, 0x38, 0x8, - 0x23, 0xf, 0x18, 0x38, 0x10, - 0x23, 0xf, 0x18, 0x38, 0x18, - 0x23, 0xf, 0x1f, 0, 0, - 0x22, 0xf, 0x30, - 0x13, 0xf, 0xfe, 0xc0, 0, 0, - 0x2, 0xfe, 0x86, 0, 0, - 0x1, 0xf8, 0x90, - 0x11, 0xd7, - 0x2, 0xfe, 0x30, 0, 0, - 0x2, 0xfe, 0x32, 0, 0, - 0x1, 0xfe, 0x34, - 0x2, 0xfe, 0x80, 0x38, 0x30, - 0x2, 0xfe, 0x82, 0x38, 0x30, - 0x22, 0xf, 0x77, - 0x34, 0x66, 0xf, 0xdb, 0, 0, - 0x23, 0xf, 0xdb, 0, 0, - 0x34, 0x66, 0xf, 0xdf, 0, 0, - 0x23, 0xf, 0xdf, 0, 0, - 0x34, 0x66, 0xf, 0xf5, 0, 0, - 0x23, 0xf, 0xf5, 0, 0, - 0x34, 0x66, 0xf, 0xeb, 0, 0, - 0x23, 0xf, 0xeb, 0, 0, - 0x34, 0x66, 0xf, 0xef, 0, 0, - 0x23, 0xf, 0xef, 0, 0, - 0x23, 0xf, 0x55, 0, 0, - 0x23, 0xf, 0x54, 0, 0, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x1, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x2, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x3, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x4, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x5, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x6, - 0x24, 0xf, 0xc2, 0, 0, 0xff, 0x7, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x1, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x2, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x3, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x4, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x5, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x6, - 0x35, 0xf3, 0xf, 0xc2, 0, 0, 0xff, 0x7, - 0x23, 0xf, 0xae, 0x38, 0x8, - 0x23, 0xf, 0xae, 0x38, 0, - 0x23, 0xf, 0xae, 0x38, 0x10, - 0x23, 0xf, 0xae, 0x38, 0x18, - 0x34, 0xf2, 0xf, 0x10, 0, 0, - 0x34, 0xf3, 0xf, 0x10, 0, 0, - 0x34, 0x66, 0xf, 0x10, 0, 0, - 0x23, 0xf, 0x10, 0, 0, - 0x34, 0xf2, 0xf, 0x11, 0, 0, - 0x34, 0xf3, 0xf, 0x11, 0, 0, - 0x34, 0x66, 0xf, 0x11, 0, 0, - 0x23, 0xf, 0x11, 0, 0, - 0x34, 0xf2, 0xf, 0x12, 0, 0, - 0x34, 0xf3, 0xf, 0x12, 0, 0, - 0x34, 0x66, 0xf, 0x12, 0, 0, - 0x23, 0xf, 0x12, 0xc0, 0xc0, - 0x23, 0xf, 0x12, 0, 0, - 0x34, 0x66, 0xf, 0x13, 0xc0, 0xc0, - 0x23, 0xf, 0x13, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0x13, 0, 0, - 0x23, 0xf, 0x13, 0, 0, - 0x34, 0x66, 0xf, 0x14, 0, 0, - 0x23, 0xf, 0x14, 0, 0, - 0x34, 0x66, 0xf, 0x15, 0, 0, - 0x23, 0xf, 0x15, 0, 0, - 0x34, 0xf3, 0xf, 0x16, 0, 0, - 0x34, 0x66, 0xf, 0x16, 0, 0, - 0x23, 0xf, 0x16, 0xc0, 0xc0, - 0x23, 0xf, 0x16, 0, 0, - 0x34, 0x66, 0xf, 0x17, 0xc0, 0xc0, - 0x23, 0xf, 0x17, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0x17, 0, 0, - 0x23, 0xf, 0x17, 0, 0, - 0x34, 0x66, 0xf, 0x28, 0, 0, - 0x23, 0xf, 0x28, 0, 0, - 0x34, 0x66, 0xf, 0x29, 0, 0, - 0x23, 0xf, 0x29, 0, 0, - 0x34, 0xf2, 0xf, 0x2a, 0, 0, - 0x34, 0xf3, 0xf, 0x2a, 0, 0, - 0x34, 0x66, 0xf, 0x2a, 0, 0, - 0x23, 0xf, 0x2a, 0, 0, - 0x34, 0x66, 0xf, 0x2b, 0, 0, - 0x23, 0xf, 0x2b, 0, 0, - 0x34, 0xf2, 0xf, 0x2c, 0, 0, - 0x34, 0xf3, 0xf, 0x2c, 0, 0, - 0x34, 0x66, 0xf, 0x2c, 0, 0, - 0x23, 0xf, 0x2c, 0, 0, - 0x34, 0x66, 0xf, 0x2d, 0, 0, - 0x34, 0xf2, 0xf, 0x2d, 0, 0, - 0x34, 0xf3, 0xf, 0x2d, 0, 0, - 0x23, 0xf, 0x2d, 0, 0, - 0x34, 0x66, 0xf, 0x2e, 0, 0, - 0x23, 0xf, 0x2e, 0, 0, - 0x34, 0x66, 0xf, 0x2f, 0, 0, - 0x23, 0xf, 0x2f, 0, 0, - 0x22, 0xf, 0x37, - 0x34, 0x66, 0xf, 0x50, 0xc0, 0xc0, - 0x23, 0xf, 0x50, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0x51, 0, 0, - 0x34, 0xf2, 0xf, 0x51, 0, 0, - 0x34, 0xf3, 0xf, 0x51, 0, 0, - 0x23, 0xf, 0x51, 0, 0, - 0x34, 0xf3, 0xf, 0x52, 0, 0, - 0x23, 0xf, 0x52, 0, 0, - 0x34, 0xf3, 0xf, 0x53, 0, 0, - 0x23, 0xf, 0x53, 0, 0, - 0x34, 0x66, 0xf, 0x54, 0, 0, - 0x23, 0xf, 0x54, 0, 0, - 0x34, 0x66, 0xf, 0x55, 0, 0, - 0x23, 0xf, 0x55, 0, 0, - 0x34, 0x66, 0xf, 0x56, 0, 0, - 0x23, 0xf, 0x56, 0, 0, - 0x34, 0x66, 0xf, 0x57, 0, 0, - 0x23, 0xf, 0x57, 0, 0, - 0x34, 0xf2, 0xf, 0x58, 0, 0, - 0x34, 0xf3, 0xf, 0x58, 0, 0, - 0x34, 0x66, 0xf, 0x58, 0, 0, - 0x23, 0xf, 0x58, 0, 0, - 0x34, 0xf2, 0xf, 0x59, 0, 0, - 0x34, 0xf3, 0xf, 0x59, 0, 0, - 0x34, 0x66, 0xf, 0x59, 0, 0, - 0x23, 0xf, 0x59, 0, 0, - 0x34, 0xf2, 0xf, 0x5a, 0, 0, - 0x34, 0xf3, 0xf, 0x5a, 0, 0, - 0x34, 0x66, 0xf, 0x5a, 0, 0, - 0x23, 0xf, 0x5a, 0, 0, - 0x34, 0x66, 0xf, 0x5b, 0, 0, - 0x34, 0xf3, 0xf, 0x5b, 0, 0, - 0x23, 0xf, 0x5b, 0, 0, - 0x34, 0xf2, 0xf, 0x5c, 0, 0, - 0x34, 0xf3, 0xf, 0x5c, 0, 0, - 0x34, 0x66, 0xf, 0x5c, 0, 0, - 0x23, 0xf, 0x5c, 0, 0, - 0x34, 0xf2, 0xf, 0x5d, 0, 0, - 0x34, 0xf3, 0xf, 0x5d, 0, 0, - 0x34, 0x66, 0xf, 0x5d, 0, 0, - 0x23, 0xf, 0x5d, 0, 0, - 0x34, 0xf2, 0xf, 0x5e, 0, 0, - 0x34, 0xf3, 0xf, 0x5e, 0, 0, - 0x34, 0x66, 0xf, 0x5e, 0, 0, - 0x23, 0xf, 0x5e, 0, 0, - 0x34, 0xf2, 0xf, 0x5f, 0, 0, - 0x34, 0xf3, 0xf, 0x5f, 0, 0, - 0x34, 0x66, 0xf, 0x5f, 0, 0, - 0x23, 0xf, 0x5f, 0, 0, - 0x34, 0x66, 0xf, 0x60, 0, 0, - 0x23, 0xf, 0x60, 0, 0, - 0x34, 0x66, 0xf, 0x61, 0, 0, - 0x23, 0xf, 0x61, 0, 0, - 0x34, 0x66, 0xf, 0x62, 0, 0, - 0x23, 0xf, 0x62, 0, 0, - 0x34, 0x66, 0xf, 0x63, 0, 0, - 0x23, 0xf, 0x63, 0, 0, - 0x34, 0x66, 0xf, 0x64, 0, 0, - 0x23, 0xf, 0x64, 0, 0, - 0x34, 0x66, 0xf, 0x65, 0, 0, - 0x23, 0xf, 0x65, 0, 0, - 0x34, 0x66, 0xf, 0x66, 0, 0, - 0x23, 0xf, 0x66, 0, 0, - 0x34, 0x66, 0xf, 0x67, 0, 0, - 0x23, 0xf, 0x67, 0, 0, - 0x34, 0x66, 0xf, 0x68, 0, 0, - 0x23, 0xf, 0x68, 0, 0, - 0x34, 0x66, 0xf, 0x69, 0, 0, - 0x23, 0xf, 0x69, 0, 0, - 0x34, 0x66, 0xf, 0x6a, 0, 0, - 0x23, 0xf, 0x6a, 0, 0, - 0x34, 0x66, 0xf, 0x6b, 0, 0, - 0x23, 0xf, 0x6b, 0, 0, - 0x34, 0x66, 0xf, 0x6c, 0, 0, - 0x34, 0x66, 0xf, 0x6d, 0, 0, - 0x34, 0x66, 0xf, 0x6e, 0, 0, - 0x23, 0xf, 0x6e, 0, 0, - 0x34, 0x66, 0xf, 0x6f, 0, 0, - 0x34, 0xf3, 0xf, 0x6f, 0, 0, - 0x23, 0xf, 0x6f, 0, 0, - 0x34, 0x66, 0xf, 0x70, 0, 0, - 0x34, 0xf2, 0xf, 0x70, 0, 0, - 0x34, 0xf3, 0xf, 0x70, 0, 0, - 0x23, 0xf, 0x70, 0, 0, - 0x34, 0x66, 0xf, 0x74, 0, 0, - 0x23, 0xf, 0x74, 0, 0, - 0x34, 0x66, 0xf, 0x75, 0, 0, - 0x23, 0xf, 0x75, 0, 0, - 0x34, 0x66, 0xf, 0x76, 0, 0, - 0x23, 0xf, 0x76, 0, 0, - 0x34, 0x66, 0xf, 0x7c, 0, 0, - 0x34, 0xf2, 0xf, 0x7c, 0, 0, - 0x34, 0x66, 0xf, 0x7d, 0, 0, - 0x34, 0xf2, 0xf, 0x7d, 0, 0, - 0x34, 0x66, 0xf, 0x7e, 0, 0, - 0x34, 0xf3, 0xf, 0x7e, 0, 0, - 0x23, 0xf, 0x7e, 0, 0, - 0x34, 0x66, 0xf, 0x7f, 0, 0, - 0x34, 0xf3, 0xf, 0x7f, 0, 0, - 0x23, 0xf, 0x7f, 0, 0, - 0x23, 0xf, 0xc3, 0, 0, - 0x34, 0x66, 0xf, 0xc4, 0, 0, - 0x23, 0xf, 0xc4, 0, 0, - 0x34, 0x66, 0xf, 0xc5, 0xc0, 0xc0, - 0x23, 0xf, 0xc5, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xc6, 0, 0, - 0x23, 0xf, 0xc6, 0, 0, - 0x34, 0x66, 0xf, 0xd1, 0, 0, - 0x23, 0xf, 0xd1, 0, 0, - 0x34, 0x66, 0xf, 0xd2, 0, 0, - 0x23, 0xf, 0xd2, 0, 0, - 0x34, 0x66, 0xf, 0xd3, 0, 0, - 0x23, 0xf, 0xd3, 0, 0, - 0x34, 0x66, 0xf, 0xd4, 0, 0, - 0x23, 0xf, 0xd4, 0, 0, - 0x34, 0x66, 0xf, 0xd5, 0, 0, - 0x23, 0xf, 0xd5, 0, 0, - 0x34, 0x66, 0xf, 0xd6, 0, 0, - 0x34, 0xf2, 0xf, 0xd6, 0xc0, 0xc0, - 0x34, 0xf3, 0xf, 0xd6, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xd7, 0xc0, 0xc0, - 0x23, 0xf, 0xd7, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xd8, 0, 0, - 0x23, 0xf, 0xd8, 0, 0, - 0x34, 0x66, 0xf, 0xd9, 0, 0, - 0x23, 0xf, 0xd9, 0, 0, - 0x34, 0x66, 0xf, 0xda, 0, 0, - 0x23, 0xf, 0xda, 0, 0, - 0x34, 0x66, 0xf, 0xdc, 0, 0, - 0x23, 0xf, 0xdc, 0, 0, - 0x34, 0x66, 0xf, 0xdd, 0, 0, - 0x23, 0xf, 0xdd, 0, 0, - 0x34, 0x66, 0xf, 0xde, 0, 0, - 0x23, 0xf, 0xde, 0, 0, - 0x34, 0x66, 0xf, 0xe0, 0, 0, - 0x23, 0xf, 0xe0, 0, 0, - 0x34, 0x66, 0xf, 0xe1, 0, 0, - 0x23, 0xf, 0xe1, 0, 0, - 0x34, 0x66, 0xf, 0xe2, 0, 0, - 0x23, 0xf, 0xe2, 0, 0, - 0x34, 0x66, 0xf, 0xe3, 0, 0, - 0x23, 0xf, 0xe3, 0, 0, - 0x34, 0x66, 0xf, 0xe4, 0, 0, - 0x23, 0xf, 0xe4, 0, 0, - 0x34, 0x66, 0xf, 0xe5, 0, 0, - 0x23, 0xf, 0xe5, 0, 0, - 0x34, 0x66, 0xf, 0xe7, 0, 0, - 0x23, 0xf, 0xe7, 0, 0, - 0x34, 0x66, 0xf, 0xe8, 0, 0, - 0x23, 0xf, 0xe8, 0, 0, - 0x34, 0x66, 0xf, 0xe9, 0, 0, - 0x23, 0xf, 0xe9, 0, 0, - 0x34, 0x66, 0xf, 0xea, 0, 0, - 0x23, 0xf, 0xea, 0, 0, - 0x34, 0x66, 0xf, 0xec, 0, 0, - 0x23, 0xf, 0xec, 0, 0, - 0x34, 0x66, 0xf, 0xed, 0, 0, - 0x23, 0xf, 0xed, 0, 0, - 0x34, 0x66, 0xf, 0xee, 0, 0, - 0x23, 0xf, 0xee, 0, 0, - 0x34, 0xf2, 0xf, 0xf0, 0, 0, - 0x34, 0x66, 0xf, 0xf1, 0, 0, - 0x23, 0xf, 0xf1, 0, 0, - 0x34, 0x66, 0xf, 0xf2, 0, 0, - 0x23, 0xf, 0xf2, 0, 0, - 0x34, 0x66, 0xf, 0xf3, 0, 0, - 0x23, 0xf, 0xf3, 0, 0, - 0x34, 0x66, 0xf, 0xf4, 0, 0, - 0x23, 0xf, 0xf4, 0, 0, - 0x34, 0x66, 0xf, 0xf6, 0, 0, - 0x23, 0xf, 0xf6, 0, 0, - 0x34, 0x66, 0xf, 0xf7, 0xc0, 0xc0, - 0x23, 0xf, 0xf7, 0xc0, 0xc0, - 0x34, 0x66, 0xf, 0xf8, 0, 0, - 0x23, 0xf, 0xf8, 0, 0, - 0x34, 0x66, 0xf, 0xf9, 0, 0, - 0x23, 0xf, 0xf9, 0, 0, - 0x34, 0x66, 0xf, 0xfa, 0, 0, - 0x23, 0xf, 0xfa, 0, 0, - 0x34, 0x66, 0xf, 0xfb, 0, 0, - 0x23, 0xf, 0xfb, 0, 0, - 0x34, 0x66, 0xf, 0xfc, 0, 0, - 0x23, 0xf, 0xfc, 0, 0, - 0x34, 0x66, 0xf, 0xfd, 0, 0, - 0x23, 0xf, 0xfd, 0, 0, - 0x34, 0x66, 0xf, 0xfe, 0, 0, - 0x23, 0xf, 0xfe, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0, 0, 0, - 0x34, 0xf, 0x38, 0, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1, 0, 0, - 0x34, 0xf, 0x38, 0x1, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x2, 0, 0, - 0x34, 0xf, 0x38, 0x2, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3, 0, 0, - 0x34, 0xf, 0x38, 0x3, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x4, 0, 0, - 0x34, 0xf, 0x38, 0x4, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x5, 0, 0, - 0x34, 0xf, 0x38, 0x5, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x6, 0, 0, - 0x34, 0xf, 0x38, 0x6, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x7, 0, 0, - 0x34, 0xf, 0x38, 0x7, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x8, 0, 0, - 0x34, 0xf, 0x38, 0x8, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x9, 0, 0, - 0x34, 0xf, 0x38, 0x9, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0xa, 0, 0, - 0x34, 0xf, 0x38, 0xa, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0xb, 0, 0, - 0x34, 0xf, 0x38, 0xb, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1c, 0, 0, - 0x34, 0xf, 0x38, 0x1c, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1d, 0, 0, - 0x34, 0xf, 0x38, 0x1d, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x1e, 0, 0, - 0x34, 0xf, 0x38, 0x1e, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xf, 0, 0, - 0x34, 0xf, 0x3a, 0xf, 0, 0, - 0x34, 0x66, 0xf, 0xc7, 0x38, 0x30, - 0x34, 0xf3, 0xf, 0xc7, 0x38, 0x30, - 0x23, 0xf, 0xc7, 0x38, 0x30, - 0x23, 0xf, 0xc7, 0x38, 0x38, - 0x34, 0x66, 0xf, 0x71, 0xf8, 0xd0, - 0x23, 0xf, 0x71, 0xf8, 0xd0, - 0x34, 0x66, 0xf, 0x71, 0xf8, 0xe0, - 0x23, 0xf, 0x71, 0xf8, 0xe0, - 0x34, 0x66, 0xf, 0x71, 0xf8, 0xf0, - 0x23, 0xf, 0x71, 0xf8, 0xf0, - 0x34, 0x66, 0xf, 0x72, 0xf8, 0xd0, - 0x23, 0xf, 0x72, 0xf8, 0xd0, - 0x34, 0x66, 0xf, 0x72, 0xf8, 0xe0, - 0x23, 0xf, 0x72, 0xf8, 0xe0, - 0x34, 0x66, 0xf, 0x72, 0xf8, 0xf0, - 0x23, 0xf, 0x72, 0xf8, 0xf0, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xd0, - 0x23, 0xf, 0x73, 0xf8, 0xd0, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xd8, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xf0, - 0x23, 0xf, 0x73, 0xf8, 0xf0, - 0x34, 0x66, 0xf, 0x73, 0xf8, 0xf8, - 0x33, 0xf, 0xae, 0xe8, - 0x33, 0xf, 0xae, 0xf0, - 0x33, 0xf, 0xae, 0xf8, - 0x23, 0xf, 0xae, 0x38, 0x38, - 0x23, 0xf, 0xf, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xc, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xd, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x14, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x15, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x40, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x41, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x21, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x2a, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x42, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x2b, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x10, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xe, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x29, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x61, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x60, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x63, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x62, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x37, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x41, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x20, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x22, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3c, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3d, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3f, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3e, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x38, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x39, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3b, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x3a, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x20, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x21, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x22, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x23, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x24, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x25, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x30, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x31, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x32, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x33, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x34, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x35, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x28, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x40, 0, 0, - 0x45, 0x66, 0xf, 0x38, 0x17, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x8, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0x9, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xa, 0, 0, - 0x45, 0x66, 0xf, 0x3a, 0xb, 0, 0, - 0x1, 0xe7, 0x7, -}; 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/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/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/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/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.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/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